delphi 调用c/c++函数dll的坑

小知识

C++中以&的参数在Delphi必须以const或者var申明,否则会产生错误。

WIN32PROJECT1_API void test8(RECT &a) {  
 a.left = 1;  
 a.top = 2;  
 a.right = 3;  
 a.bottom = 4;  
}  

此时参数为 RECT &a,在Delphi中有两种申明方式,各有不同

1、 方式一 var

procedure test8(var a: TRect); cdecl; external Windll name 'test8';  

2、方式二 const

procedure test8(const a: TRect); cdecl; external Windll name 'test8';  

注意

这个DLL是你写的么,尽量不要返回一个char*,用参数保存返回值和返回值的长度。
这里你最好是申请个buffer,copy进去再返回这个buffer吧,记得释放。
如果要返回字符串,要在主调程序中 分配好内存,然后函数内把要返回的字符串写入内存。对于字符串要占用的内存,由主调程序分配和释放,否则就有可能造成内存泄漏。

Delphi 与 C/C++ 数据类型对照表
http://blog.csdn.net/huang_xw/article/details/7908616

这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值