读书人

DLL动态库应用要点概括

发布时间: 2012-11-07 09:56:10 作者: rapoo

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


读书人网 >编程

热点推荐