使用C++调用C++ dll的关键步骤
2010-11-24 08:24
357 查看
被调用的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。
整理自:/article/5095048.html
/*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。
整理自:/article/5095048.html
相关文章推荐
- 本文是关于使用C++调用Matlab编译生成的Dll的说明
- Java使用JNI调用C/C++的DLL动态链接库2
- C#使用CLR/C++的DLL间接调用Native C++的DLL
- 使用Delphi调用C++编写的DLL
- vs2010下C++调用DLL以及怎么生成DLL和为什么使用DLL
- Silverlight实用窍门系列:22.Silverlight使用WebService调用C++,Delphi编写的DLL文件【实例源码下载】
- Eclipse中使用JNI调用C++ build的dll
- Windows下python使用SWIG调用C++ dll
- 使用C++调用C#的DLL (转)
- JAVA使用JNI 调用 C++ DLL 动态连接库从零开始 一
- C++工程代码打包的dll在C#工程上使用注意点!变量对应关系与dll调用出错情况。
- 使用c++调用matlab编译的dll.doc
- VS2010使用C#调用C++编写的dll,在其他电脑上无法运行的解决办法
- C#调用C++生成的Dll库,Dll使用callback向C#传递指针
- 学习使用C++封装DLL并调用
- 【转载整理】eclipse 开发c/c++、Java使用JNI调用C程序、生成64位dll动态链接库
- C#使用CLR/C++的DLL间接调用Native C++的DLL
- Unity使用C#调用C++dll传递指针参数、接收指针返回值
- C#调用使用C++\CLI封装的标准C++ DLL问题:无法访问受保护的内存,这通常指示其他内存已损坏
- windows7下,Java中利用JNI调用c++生成的动态库的使用步骤