gpt4 book ai didi

delphi - 如何将字符串数组传递给外部 DLL?

转载 作者:行者123 更新时间:2023-12-03 15:49:10 29 4
gpt4 key购买 nike

我有一个像这样的外部函数:

extern "C" __declspec(dllexport) int __cdecl Identify(BSTR* bstrTemplates, __int64 lCount, __int64* lIndex, __int64* lRetCode) 

bstrTemplates 应该是一个字符串数组。

我的函数在 D7 中应该是什么样子,以及如何将字符串数组传递给外部函数。我现在无法思考。

最佳答案

BSTR 是 Delphi 中的 WideString,指向 BSTR 的指针也是 Delphi 中指向 WideString 的指针,但就 C 代码而言,它很可能是数组引用。处理此类数组的典型方法是使用以 null 结尾的数组,我将假设这里就是这样做的。

因此,我们需要在 Delphi 中声明一个 WideString 数组,并将最后一个元素保留为 null,或者在 Delphi 中为 nil:

var
templates : array of WideString;
begin
SetLength(templates, 3); // 2 template names + 1 nil
templates[0] := 'template1';
templates[1] := 'template2';
templates[2] := nil;

Identify(@templates[0], ....); // pass it as a pointer to the first element

我不保证这会起作用。我在这里猜测,并且还没有尝试过(这将涉及创建一个 C 项目和测试),所以这可能会严重失败。不过值得一试。

关于delphi - 如何将字符串数组传递给外部 DLL?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3342327/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com