我如何从 DLL 传递 pchar?dll 必须与其他应用程序兼容,而不仅仅是 delphi。在帮助中写道,将指针传递给局部变量是危险的,如果我们将此变量设为全局变量,则代码将不是线程安全的。
我们可以安全地传递一个宽字符串,但在这种情况下,dll 将与其他(非 Delphi)应用程序不兼容。
{code in dll}
function Test:pchar;
var
str:string;
begin
str:='Some string';
result:=pchar(str); // wrong way, may be UB.
end;
{code in dll}
var
str:string // global variable
function Test:pchar;
begin
str:='Some string';
result:=pchar(str); // code not threadsafe
end;
{code in dll}
function Test:WideString;
var
str:WideString;
begin
str:='Some string';
result:=str; // will works ONLY with Delphi apps :(
end;
:(
how do experienced programmers?
var
Form1: TForm1;
function Test(out p:pchar):Integer;stdcall; external 'project2';
procedure …Run Code Online (Sandbox Code Playgroud)