文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>C++ 调用dll

C++ 调用dll

时间:2010-12-17  来源:霞光照耀

先看delphi写的dll

 

代码
unit Unit1;

interface

function Add(ANumOne, ANumTwo: Integer): Integer; stdcall;

implementation

function Add(ANumOne, ANumTwo: Integer): Integer; stdcall;
begin
Result :
= ANumOne + ANumTwo;
end;

exports
Add;

end.

 

再看C++调用

 

代码
#include <iostream>
#include
<windows.h>


typedef
int (*AddFunc)(int, int)__stdcall;

int main(int argc, char **argv)
{
HINSTANCE handle;
handle
= LoadLibrary("d:\Test.dll");
AddFunc func
= (AddFunc)GetProcAddress(handle, "Add");
std::cout
<<func(3,4)<<std::endl;
return 0;
}

 

 

其实编译好的二进制文件例如exe和dll在运用的时候都会映射到内存中去。因此只要在这段映射的内存中找到需要调用的函数的地址,

并且知道函数的调用形式就可以用函数指针加以调用。

在delphi代码中,我们可以看到Add函数带有两个参数,并且标明了是stdcall的调用形式,export标明了导出函数是Add

在C++代码中,我们用到了两个api函数

  • 第一个是LoadLibrary函数,它的作用是将dll映射到内存,并且返回句柄
  • 第二个函数是GetProcAddress,它的作用是返回函数指针,注意一定要利用先验知识进行正确的类型转换, 不然会调用失败。
相关阅读 更多 +
排行榜 更多 +
猎枪行动

猎枪行动

飞行射击 下载
导弹袭击

导弹袭击

飞行射击 下载
猫猫突围封锁要塞新手打法

猫猫突围封锁要塞新手打法

飞行射击 下载