读书人

char*参数传递-集锦再问

发布时间: 2013-01-09 09:38:16 作者: rapoo

char**参数传递----汇总再问
我先说说我的思路。错误的地方帮忙指点。

要实现的功能:delphi7要调用vc写的dll,dll中参数类型为char**。
dll中的声明:



[解决办法]
arrMedialpm[0]:='101.1.110.136'+char(0);
arrMedialpa[0]:='101.1.110.137'+char(0);
你确定调用ML_I的时候, arrMedialpm还有效吗, 即内存没有有被释放掉.或者你传入的指针是否正确?

提示是地址访问错误, 你可以在dll中的 ML_I 函数中输出 指针值看看指针是否合法.
[解决办法]
你这样使用的话,
arrGroupNo:PPCharArray;//array[0..1] of PChar;
arrMedialpm:PPCharArray;//array[0..1] of PChar;
这两个变量传入之前分配空间了吗?

你应该这样使用:
arrGroupNo:TPCharArray;
arrMedialpm:TPCharArray;
ML_I(@arrGroupNo, @arrMedialpm, ...);

我测试了一下,按照你给出的C声明写了一个DLL,用Delphi调用是正常的。

[解决办法]
引用:
函数参数声明为开放数组,Delphi编译器会隐含传入数组上界,这样C++ DLL中的函数取参数就错了。

这样就可以了:
type
PPCharArray = ^TPCharArray;
TPCharArray = array[0..255] of PChar;

function ML_I(arrGroupNo, arrMedialpm: PPCharArray): PCh……
+1

读书人网 >.NET

热点推荐