我正在尝试在我的 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.
取决于您使用的 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