gpt4 book ai didi

c++ - 如何使用字符串参数在Delphi中调用C++ DLL?

转载 作者:太空狗 更新时间:2023-10-29 20:41:13 35 4
gpt4 key购买 nike

我的 Delphi 应用程序正在从 C++ DLL 调用一个函数,该函数应该返回这样的字符串。

C++动态链接库

__declspec( dllexport ) void sample(char* str1, char* str2)
{
strcpy(str1, "123");
strcpy(str2, "abc");
}

德尔福

procedure sample(Str1, Str2: pchar); cdecl; external 'cpp.dll';
var
buf1 : Pchar;
buf2 : Pchar;
begin
sample(@buf1, @buf2);
//display buf1 and buf2
//ShowMessage(buf1); //it display random ascii characters
end;

正确的做法是什么?

最佳答案

您需要为要写入的 C++ 代码分配内存。例如:

var
buf1, buf2: array [0..255] of Char;
begin
sample(buf1, buf2);
end;

您还应该重新设计您的界面以接受缓冲区的长度,从而允许 DLL 代码避免缓冲区溢出。

关于c++ - 如何使用字符串参数在Delphi中调用C++ DLL?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22169178/

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