繁体   English   中英

如何将Delphi的“字符串数组”参数转换为C ++?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM