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.youkuaiyun.com/fansongy/article/details/8137948