被调用的dll项目
/*dllDemo.h中*/
extern "C" _declspec(dllexport) void Func(void); //接口函数声明
/*dllDemo.cpp中*/
#include "dllDemo.h"
extern "C" _declspec(dllexport)void Func(void) //接口函数定义
{
return;
}
extern "C" _declspec(dllexport) void Func(void); //接口函数声明
/*dllDemo.cpp中*/
#include "dllDemo.h"
extern "C" _declspec(dllexport)void Func(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();
}
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();
}