dynamic linke library example (C/C++)

来源:互联网 发布:网络棋牌赌博 如何判刑 编辑:程序博客网 时间:2024/04/28 04:24

1. 示例:制作一个动态链接库,名为Hello.dll

//Hello.h#pragma once#define DLL_EXPORT __declspec(dllexport)#ifdef __cplusplusextern "C" {#endifDLL_EXPORT void Hello(void);#ifdef __cplusplus}#endif

以上是声明了一个可以在C中使用的导出为DLL函数的原型;文件Hello.c是其实现。
//Hello.c#include "Hello.h"#include "stdio.h"void Hello(void){  printf("Hello\n");}

在VC++6.0平台上编译生成Hello.lib和Hello.dll

2.示例:显示调用和隐身调用

//显示调用//test.cpp#include <windows.h>int main(int argc, char* argv[]){  typedef void (*pfun)(void);//声明一个函数指针类型  //将Hello.dll拷贝至当前目录下之后  HINSTANCE hDLL = LoadLibrary(hDLL,"Hello.dll");//显示加载dll  pfun hello = (pfun)GetProcAddress(hDLL,"Hello");//获得Dll中的函数地址  Hello();//调用之  FreeLibrary(hDLL);//释放Dll return 0;}/* * 总结:显示调用只需要dll文件即可,在运行中dll由程序员释放 */

//隐式调用//test.cpp//将Hello.dll及Hello.lib拷贝至当前目录下#include <windows.h>#pragma comment(lib,"Hello.lib")//显示加载lib文件extern "C" __declspec(dllexport) void Hello(void);//显示声明函数int main(int argc, char* argv[]){  //直接调用函数  Hello();  return 0;}//dll和lib都是需要的。