两天前,我安装了 Windows 10 build 1709 16299.192 和 Embarcadero Delphi 10.2.2 Tokyo。
由于我安装了它们,我的应用程序无法在运行时加载 Firebird 客户端库。
如果我有一个用旧 Windows 和 Delphi 10.2.2 编译的 exe 文件,它可以正常工作,但是用新 Windows 和 Delphi 编译的每个 exe 文件都不起作用。
如果我通过 测试连接TFDConnection
,它会成功连接,但是当我运行应用程序时出现此错误:
[firedac][phys][fb]-314 无法加载供应商库 [c:\users\username\desktop\projectname\bin\fbclient.dll] 找不到指定的模块
提示:检查它是否在 PATH 或应用程序中EXE 目录,并具有 x86 位。
路径正确,客户端库是x86的。在安装 Windows 10 build 1907 16299.192 之前,相同的应用程序正在运行。
我尝试了 DevArt UniDac 并编译为 Win64,仍然有同样的问题。
重新安装 Windows 和 Delphi 10.2.2(用 25.0.28979.1978 和 25.0.29039.2004 两个版本测试)仍然没有帮助。
我认为这是一个权限问题,但我不知道如何解决它。我bds.exe
授予了所有组的所有权限,但仍然无法正常工作。
我的测试应用程序中只有此代码
procedure TForm1.FormCreate(Sender: TObject);
var
Path: string;
begin
Path := IncludeTrailingPathDelimiter(ExtractFilePath(Application.ExeName));
FDPhysFBDriverLink1.VendorHome := Path;
FDPhysFBDriverLink1.VendorLib := 'fbclient.dll';
FDConnection1.Params.Database := Path + 'FBDV3.0.FDB';
FDConnection1.DriverName := 'FB';
FDConnection1.Params.UserName := 'sysdba';
FDConnection1.Params.Password := 'masterke';
FDConnection1.LoginPrompt := False;
FDConnection1.Connected := True;
end;
文件夹中包含的文件和文件bin
夹:
插件(文件夹包含 engine12.dll)
fbclient.dll
ib_util.dll
icudt52.dll
icudt52l.dat
icuuc52.dll