在某些电脑上将 Delphi 10.3 中的字符串参数发送到 Delphi 7.0 创建的 DLL 时出错

问题描述 投票:0回答:1

我在 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';

一切都很好。

那么,问题出在哪里?

string delphi dll delphi-7 delphi-10.3-rio
1个回答
0
投票

显示的代码很好,并且传递字符串当然没有问题。

真正的“问题”很简单,你的 DLL 依赖于 Borland 内存管理器的 DLL 版本。您必须在每台 PC 上部署

borlndmm.dll
以及
trans.dll
。除非您能够重新编译 DLL 以删除该依赖项。

© www.soinside.com 2019 - 2024. All rights reserved.