Delphi 调用C/C++的Dll(stdcall关键字, 会导致函数名分裂. 此时函数名变成_stdadd@8)
2024-08-31 23:10:08
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';
http://blog.csdn.net/huang_xw/article/details/7524359
最新文章
- nodejs 服务端添加相应头Access-Control-Allow-Origin
- spring+mybatis
- SocketTcpServer
- Html - 浮动的云朵
- 25个有用和方便的 WordPress 速查手册
- python xml.etree ElementTree解析 编辑 xml
- iOS开发——语法篇OC篇&;高级语法精讲
- mac版gif格式录屏工具下载和使用
- Oracle中忘记sys和System密码的办法
- LeetCode 169. Majority Element (众数)
- 记录python接口自动化测试--requests使用和基本方法封装(第一目)
- JarvisOJ Basic veryeasyRSA
- base64 压缩上传上传图片
- SCRUM 12.21
- flask中利用from来进行对修改修改时旧密码的验证
- UGUI 判断元素进入舞台
- org.springframework.beans.factory.BeanDefinitionStoreException: Unexpected exception parsing XML document from URL
- Web 后端--PHP 与数据库的交互
- swift版的StringAttribute
- Python面向对象(定义类和创建对象)
热门文章
- Java基本数据类型的取值范围
- CVE­-2014-3566
- 【codeforces 760A】Petr and a calendar
- 【codeforces 755C】PolandBall and Forest
- Birt
- [NPM] Use package.json variables in npm scripts
- 如何在一个div中使其子div居中
- 小强的HTML5移动开发之路(31)—— JavaScript回顾6
- Crystal Report - 水晶报表导出文件的格式设置
- Android Studio入门(安装-->;开发调试)