C++调用 dll的关键步骤
时间:2010-11-26 来源:秩名
被调用的dll项目
/*dllDemo.h中*/
extern "C" _declspec(dllexport) void Func(void); //接口函数声明
/*dllDemo.cpp中*/
#include "dllDemo.h"
extern "C" _declspec(dllexport)void Sum(void) //接口函数定义
{
return;
}
_declspec,Declare Specification,这个关键字可以理解为声明规范。它有许多用法,语法如下:
__declspec ( extended-decl-modifier-seq )
配合dllexport和dllimport,分别表示导入和到导出dll接口函数。
调用dll的项目 - 显式调用
1)只需要dll文件
2)在调用处用法如下
代码
// a)声明一个和dll接口函数规则相同的函数指针
typedef void(*pFunc)(void);
pFunc doFunc=NULL;
// b)加载动态链接库dll文件;
HINSTANCE hDLL;
hDLL = LoadLibrary("dllDemo.dll");
// c)本地函数指针获得dll中的接口函数;
doFunc=(pFunc)GetProcAddress(hDLL,"Func");
// d)调用
if(doFunc)
{
doFunc();
}
3)调用完毕可以使用Freelibrary(hDLL)释放dll文件。
调用dll的项目 - 隐式调用
1)需要dll
2)需要lib,并且在项目依赖项中添加
3)调用处代码如下
//a) cpp头部声明来自dll的外部接口函数,函数名必须一样。
extern "C"_declspec(dllimport) void Func(void);
int main()
{
//b) 像使用其他函数一样使用dll接口函数
Func();
return 0;
}
4)运行期间无法释放dll。
标签分类: