从DLL中导出变量
使用动态链接库的好处:
1.可以采用多种编程语言来编程。比如可以使用C#来调用DLL,使用DLL中的导出函数和导出变量。
2.可以增强产品的功能,提供二次开发的平台。
3.简化项目管理、可以节省磁盘空间和内存。比如多个应用程序需要访问同样的功能,那么就可以讲该功能以DLL的形式提供。
声明导出变量有两种形式:
第一种是用__declspec进行导出声明
__declspec(dllexport) extern int DLLData;
第二种是用模块定义文件(.def)进行导出声明
LIBRARY DLLSample
DESCRIPTION "my simple DLL"
EXPORTS DLLData DATA ;DATA表示这是数据(变量)
同样,应用程序调用DLL中的变量也有两种方法。
第一种是隐式链接:
#pragma comment(lib, “DLLSample.lib”);
第二种是显式链接:
int my_int;
HINSTANCE hInstLibrary = LoadLibrary("DLLSample.dll");
my_int = *(int*)GetProcAddress(hInstLibrary, "DLLData");
注:通过GetProcAddress取出的函数或者变量都是地址,因此,需要解引用并且转类型。