DLL动态库使用要点概括

DLL使用步骤:
1、编辑DLL,导出生成相应的.lib和.dll
    为了让DLL导出一些函数,需要在每一个将要被导出的函数前加标识符:_declspec(dllexport) 生成文件中.lib为引入库文件。可通过dumpbin -exports [DLL NAME]
    发布.h文件可以采用宏定义的方法处理:

 

#ifdef LEARNDLL_API
#else
#define LEARNDLL_API _declspec(dllimport)
#endif

LEARNDLL_API int add(int a, int b);  //ok
class 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文件来对导出函数的名称进行指定:

LIBRARY

EXPORTS
ADDME=add
substract


   详细可查询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


 

你可能感兴趣的:(DLL动态库使用要点概括)