gpt4 book ai didi

delphi - 将参数从 Delphi 5 传递到 Delphi DLL XE

转载 作者:行者123 更新时间:2023-12-03 15:48:50 26 4
gpt4 key购买 nike

我有一个Delphi 5应用程序,在应用程序代码中调用DLL中的函数,传递整数和字符串参数,这在以静态方式调用DLL时效果很好,当我尝试动态更改时则不起作用。哪种是动态传递参数到函数的正确方法?代码如下

主要应用

  function Modulo_Pptos_Operacion(No_Orden : Integer; pathBD : string; PathBDConf :   String) : Integer ; stdcall;
external 'LIB_Pptos_Oper.dll';

Modulo_Pptos_Operacion(DmDatos.OrdenesNO_Orden.AsInteger,
DmDatos.CiasPATHA.AsString, 'Alguna String');

DLL

  Modulo_Pptos_Operacion function (No_Orden: Integer; PathDB: AnsiString; PathDBConfig: AnsiString): Integer; StdCall;

动态崩溃主要应用

  type
TDLLPpto = function(No_Orden : Integer; PathDB : AnsiString; PathDBConfig : AnsiString) : Integer;
var
DLLHandle: THandle;
: TDLLPpto;

PROCEDURE CALL
DLLHandle := LoadLibrary('LIB_Pptos_Oper.dll');
DLLHandle <> 0 then
begin
@DLLPpto := GetProcAddress(DLLHandle, 'Modulo_Pptos_Operacion');
end;
;

哪个是正确的方法?

最佳答案

问题可能是您混合了不同的运行时和不同的堆。 Delphi 字符串不是有效的互操作类型,因为它们的实现因版本而异。

在这种情况下,您可以简单地切换为使用空终止字符串 PAnsiChar。

关于delphi - 将参数从 Delphi 5 传递到 Delphi DLL XE,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7960853/

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