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

这里写图片描述


注意!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。



 
粤ICP备14056181号  © 2014-2021 ITdaan.com