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++中例子:
Delphi中例子:
2. 声明中加上__stdcall
C++中例子:
因为加上__stdcall关键字, 会导致函数名分裂. 此时函数名变成_stdadd@8. 其中, 8是参数的总字节数
Delphi引用的方法1: 在delphi定义中加上"name'_stdadd@8'".
Delphi引用的方法2: 增加def文件, 内容如下
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';
相关文章推荐
- Java Native Interface(Java 调用Delphi、C、C++编写的DLL)
- Delphi如何调用C++写的DLL
- Silverlight实用窍门系列:22.Silverlight使用WebService调用C++,Delphi编写的DLL文件【实例源码下载】
- Delphi调用C++写的dll示例
- Delphi如何调用C++写的DLL
- Delphi 调用C/C++的Dll(stdcall关键字, 会导致函数名分裂. 此时函数名变成_stdadd@8)
- delphi 调用c/c++函数dll的坑
- Java调用Delphi DLL(通过C++调用和直接调用两种方式)
- Silverlight实用窍门系列:22.Silverlight使用WebService调用C++,Delphi编写的DLL文件【实例源码下载】
- 使用Delphi调用C++编写的DLL
- 在Delphi中动态调用C++的DLL
- 22.Silverlight使用WebService调用C++,Delphi编写的DLL文件
- Delphi中C++的DLL的调用
- 在Delphi中动态调用C++的DLL
- Delphi动态调用C++写的DLL
- 使用Delphi调用C++编写的DLL
- Delphi 调用C/C++的DLL
- C++ 调用 delphi dll
- 使用Delphi调用C++编写的DLL
- Delphi如何调用C++写的DLL