您的位置:首页 > 编程语言 > Delphi

Delphi 调用C/C++的Dll

2012-04-30 18:04 211 查看
delphi调用C++写的Dll, 当然这个Dll要求是非MFC的Dll, 这样子才能被delphi调用. 根据C++定义函数的情况, Delphi有不同的相对应的处理方法.

1. 声明中不加__stdcall,采用VC默认格式__cdecl,但在Delphi中要注明调用格式为cdecl。
C++中例子:

extern "C" int __declspec(dllexport) add(int x, int y);

 Delphi中例子:

function add(i:Integer; j:Integer):Integer; cdecl; External 'NonMfcDll.dll';

2. 声明中加上__stdcall
C++中例子:

extern "C" int __declspec(dllexport) __stdcall stdadd(int x, int y);

因为加上__stdcall关键字, 会导致函数名分裂. 此时函数名变成_stdadd@8. 其中, 8是参数的总字节数
Delphi引用的方法1: 在delphi定义中加上"name'_stdadd@8'".

function stdadd(i:Integer; j:Integer):Integer; stdcall; External 'NonMfcDll.dll' name'_stdadd@8';

Delphi引用的方法2: 增加def文件, 内容如下

; NonMfcDll.def : 声明 DLL 的模块参数。

LIBRARY      "NonMfcDll"

EXPORTS
; 此处可以是显式导出
stdadd @1

delphi的定义如下

function add(i:Integer; j:Integer):Integer; stdcall; External 'NonMfcDll.dll';

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息