delphi调用C++写的Dll, 当然这个Dll要求是非MFC的Dll, 这样子才能被delphi调用. 根据C++定义函数的情况, Delphi有不同的相对应的处理方法.
1. 声明中不加__stdcall,采用VC默认格式__cdecl,但在Delphi中要注明调用格式为cdecl。
C++中例子:

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

Delphi中例子:

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

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

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

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

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

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

  1. ; NonMfcDll.def : 声明 DLL 的模块参数。
  2. LIBRARY      "NonMfcDll"
  3. EXPORTS
  4. ; 此处可以是显式导出
  5. stdadd @1

delphi的定义如下

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

http://blog.csdn.net/huang_xw/article/details/7524359

最新文章

  1. nodejs 服务端添加相应头Access-Control-Allow-Origin
  2. spring+mybatis
  3. SocketTcpServer
  4. Html - 浮动的云朵
  5. 25个有用和方便的 WordPress 速查手册
  6. python xml.etree ElementTree解析 编辑 xml
  7. iOS开发——语法篇OC篇&高级语法精讲
  8. mac版gif格式录屏工具下载和使用
  9. Oracle中忘记sys和System密码的办法
  10. LeetCode 169. Majority Element (众数)
  11. 记录python接口自动化测试--requests使用和基本方法封装(第一目)
  12. JarvisOJ Basic veryeasyRSA
  13. base64 压缩上传上传图片
  14. SCRUM 12.21
  15. flask中利用from来进行对修改修改时旧密码的验证
  16. UGUI 判断元素进入舞台
  17. org.springframework.beans.factory.BeanDefinitionStoreException: Unexpected exception parsing XML document from URL
  18. Web 后端--PHP 与数据库的交互
  19. swift版的StringAttribute
  20. Python面向对象(定义类和创建对象)

热门文章

  1. Java基本数据类型的取值范围
  2. CVE­-2014-3566
  3. 【codeforces 760A】Petr and a calendar
  4. 【codeforces 755C】PolandBall and Forest
  5. Birt
  6. [NPM] Use package.json variables in npm scripts
  7. 如何在一个div中使其子div居中
  8. 小强的HTML5移动开发之路(31)—— JavaScript回顾6
  9. Crystal Report - 水晶报表导出文件的格式设置
  10. Android Studio入门(安装-->开发调试)