DLL动态库使用要点概括
DLL使用步骤:
1、编辑DLL,导出生成相应的.lib和.dll
为了让DLL导出一些函数,需要在每一个将要被导出的函数前加标识符:_declspec(dllexport) 生成文件中.lib为引入库文件。可通过dumpbin -exports [DLL NAME]
发布.h文件可以采用宏定义的方法处理:
#ifdef LEARNDLL_API#else#define LEARNDLL_API _declspec(dllimport)#endifLEARNDLL_API int add(int a, int b); //okclass LEARNDLL_API A{public:...private: void M(); //用不了};class B{public:void LEARNDLL_API kaka(); //ok void C(); //用不了private: void LEARNDLL_API D(); //用不了};.......
如此做在调用方可以直接包含使用使用,在编辑库可加入#define LEARNDLL_API _declspec(dllexport) 在包含头文件之前。因为声明过,所以在定义时,可以直接定义,省去了导出的麻烦。
2、包含发布dll相应的.h文件
3、将.lib(引入文件)负责到代码目录下在Project->Setting->link中的Object/library modules中添加相应的引入文件。然后即可生成exe。可通过dumpbin -imports [EXE NAME] 或Depends工具查询引入的函数。
4、将dll复制到exe目录下,运行程序。
另外,可以通过定义def文件来对导出函数的名称进行指定:
LIBRARYEXPORTSADDME=addsubstract
详细可查询EXPORTS语句的用法。
动态加载DLL:
HINSTANCE hInst; hInst = LoadLibrary("LearnDLL2.dll"); typedef int (*ADDPROC)(int a,int b); ADDPROC add=(ADDPROC)GetProcAddress(hInst,"add"); if (!add) { MessageBox("获取函数地址失败!\n"); return; }......... FreeLibrary(hInst); 通常使用的都是Win32DLL,MFC共享库要求机器上必须有MFC动态链接库。
本篇博客出自 阿修罗道,转载请注明出处:http://blog.csdn.net/fansongy/article/details/8137948