[英]How to translate Delphi's “array of string” param to C++?
我正在尝试使用在我的C ++程序(Visual Studio 2008)中用Delphi编写的DLL。 在DLL文档中,函数声明为:
function ReadInfo(pRetBuffer: Pointer) : boolean;
其中pRetBuffer - 指向返回结果的“string of string”类型变量的指针 。 我应该如何在c ++中声明这个参数(字符串数组)?
在DLL的文档中,我有一个如何在Delphi中使用此函数的示例:
function ReadInfo(pRetBuffer: Pointer): boolean; stdcall; external 'SOME.dll'
var
RetBuffer: array of string;
.
.
.
procedure Test();
var
Result: Boolean;
begin
.
.
.
Result := ReadInfo(@RetBuffer);
.
.
.
end;
简单的答案是你无法从C ++调用该函数。 Delphi array of string
变量array of string
是一种托管类型,对Delphi是私有的。 你无法通过互操作边界传递其中一个。 对于Delphi主机尝试调用该DLL函数甚至是可疑的。
您需要更改函数以使用有效的互操作类型。
你可以使用SAFEARRAY
。 你可以让DLL返回一个指向空终止的PChar
数组的指针。 但是,您需要导出deallocator,或者分配共享堆,例如COM堆。 使用BSTR
执行此操作并同时解决分配问题。
或者,正如您自己在评论中建议的那样,您可以使用Delphi DLL作为桥梁。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.