我在 Delphi 7.0 中创建了一个 DLL 文件,如下所示:
Function TransInvoices(JSONText : PWideChar) : PChar; stdcall;
var
dm : TdmData;
Begin
dm := TdmData.create(Nil);
Try
Result := dm.Trans(JSONText); // Call Function in DataModule
Finally
FreeAndNil(dm);
End;
End;
exports
TransInvoices;
我在 Delphi 10.3 中这样调用这个 DLL 文件:
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Buttons;
Function TransInvoices(JSONText : PWideChar) : PAnsiChar; stdcall; external 'trans.dll';
type
TTransFrom = class(TForm)
TitlePanel: TPanel;
End;
在我的开发电脑和其他安装了 Delphi 的电脑上,它运行良好。但是没有安装 Delphi 的 PC 会出现问题。错误信息是:
由于未找到borlndmm.dll,代码无法继续执行。重新安装程序可能会解决此问题。
如果我不调用DLL文件,并注释它:
// Function TransInvoices(JSONText : PWideChar) : PAnsiChar; stdcall; external 'trans.dll';
一切都很好。
那么,问题出在哪里?
显示的代码很好,并且传递字符串当然没有问题。
真正的“问题”很简单,你的 DLL 依赖于 Borland 内存管理器的 DLL 版本。您必须在每台 PC 上部署
borlndmm.dll
以及 trans.dll
。除非您能够重新编译 DLL 以删除该依赖项。