CR的代码文本

all for learning about the world
  订阅 订阅  :: 管理

使用C++调用C++ dll的关键步骤

Posted on 2010-11-24 08:24  mumuliang  阅读(691)  评论(0编辑  收藏  举报

被调用的dll项目

/*dllDemo.h中*/
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();
}

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。

 

整理自:http://www.cnblogs.com/beer/archive/2010/08/19/1803560.html