MacOS 上的 Delphi+ZeosLib+Firebird

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

我正在尝试在我的 MacOS 应用程序上使用 ZeosLib,该应用程序可以在 Windows 上运行,我现在正在尝试将其适应 MacOS,但当它启动时,会出现以下错误:

None of the dynamic libraries can be found or is not loadable: libcrypt.dll.25,
libfbembed.dll.25, libfbclient.dll.25, libcrypt.dll.21, libfbembed.dll.21,
libfbclient.dll.21, libcrypt.dll.20, libfbembed.dll.20, libfbclient.dll.20, 
libfbclient.dll.2, libfbembed.dll.15, libcrypt.dll.15, libfbclient.dll.15,
libcrypt.dll,libfbembed.dll, libfbclient.dll, libcrypt.dll, libgds32.dll, libgds.dll !

Use TZConnection.LibraryLocation if the location is invalid.

在哪里可以找到这些dll文件。

这是导致错误的代码(是的,我需要 TFDConnection 和 TZConnection):

unit MainDB;

interface

uses
  System.SysUtils, System.Classes, FireDAC.Stan.Intf, FireDAC.Stan.Option,
  FireDAC.Stan.Param, FireDAC.Stan.Error, FireDAC.DatS, FireDAC.Phys.Intf,
  FireDAC.DApt.Intf, FireDAC.Stan.Async, FireDAC.DApt, FireDAC.UI.Intf,
  FireDAC.Stan.Def, FireDAC.Stan.Pool, FireDAC.Phys, FireDAC.Phys.FB,
  FireDAC.Phys.FBDef, FireDAC.FMXUI.Wait, Data.DB, FireDAC.Comp.Client,
  FireDAC.Comp.DataSet, FireDAC.Phys.IBBase, ZAbstractRODataset,
  ZAbstractDataset, ZDataset, ZAbstractConnection, ZConnection;

type
  TMDB = class(TDataModule)
    FDConnection2: TFDConnection;
    FDQuery2: TFDQuery;
    DocConnection: TZConnection;
    FDQuery1: TZQuery;
    procedure DataModuleCreate(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  MDB: TMDB;

implementation

{%CLASSGROUP 'FMX.Controls.TControl'}

{$R *.dfm}

procedure TMDB.DataModuleCreate(Sender: TObject);
begin
  //DocConnection.LibraryLocation := '/Library/Frameworks/Firebird.framework/Versions/A/Libraries';
  FDConnection2.Params.Add('Database='+ExtractFilePath(ParamStr(0))+'DATA.FDB');
  FDConnection2.Connected := True;
  DocConnection.Database := ExtractFilePath(ParamStr(0))+'DATA.FDB';
  DocConnection.Connected := True;
end;

end.
macos delphi firebird firebird2.5 zeos
1个回答
0
投票

取决于您使用的 ZEOSLib 版本,也许还有 Delphi 版本
看看 ...ZeosLib\src\plain\ZPlainFirebirdInterbaseDriver.pas 你会发现一些处理 firebird 版本的常量

  WINDOWS25_DLL_LOCATION   = 'fbclient25.dll';
  WINDOWS25_DLL_LOCATION_EMBEDDED = 'fbclientd25.dll';
  LINUX25_DLL_LOCATION   = 'libfbclient'+SharedSuffix+'.25';
  LINUX25_DLL_LOCATION_EMBEDDED = 'libfbembed'+SharedSuffix+'.25';
  LINUX25_IB_CRYPT_LOCATION = 'libcrypt'+SharedSuffix+'.25';

您可以修改这些 LINUXxx_DLL 位置(不推荐这样做)

或者理解“Sharedsuffix”(在 ...ZeosLib\sr

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