在将我的32位 Delphi Alexandria 11.3程序从32位转换为64位时,我注意到包含可执行文件的目录还包含Firebird的fbclient.dll
,它与c:\Program Files\Firebird\Firebird_3_0\WOW64\
中的文件相同
Firebird版本为3.0 64位(安装程序Firebird-3.0.4.33054_0_x64.exe
)
- SysInternals sigcheck报告fbclient.dll为32位。
- trick of inspecting the DLL with an editor也显示了一个32位文件。
- 然而,线程https://firebird-support.yahoogroups.narkive.com/xbq3IDed/unable-to-load-64bit-fbclient-dll中的某人说它是64位版本。
考虑到它实际上是required to use 64-bit DLLs from a 64-bit program,似乎我在任何地方都没有64位fbclient.dll
?
在Firebird安装过程中,我们选中了在Windows系统目录中创建gds32.dll
的选项,即fbclient.dll
的副本被重命名为Interbase客户端库gds32.dll
(source)。
更糟糕的是,根据sigcheck,C:\Windows\System32
和C:\Windows\SysWow64
中的两个gds32.dll
版本分别是64位和32位。
这是怎么回事
我必须在某个地方找到64位fbclient.dll
吗?
为什么gds32.dll
的两个副本都报告了奇怪的位数?我是否误解了SysWow 64的功能?
我已经尝试过在当前安装的基础上重新安装Firebird(所以还没有完全删除/重新安装)
2条答案
按热度按时间s4n0splo1#
与Interbase相反,Firebird客户端的名称始终是 * fbclient.dll *。在Firebird服务器的64位安装中,bin 文件夹包含64位版本的fbclient.dll,而32位版本驻留在 WOW64 文件夹中。
虽然有理由将fbclient.dll重命名为gds32.dll以保持旧的(BDE)软件满意,但只有在真正必要时才应该这样做。这样做会使InterBase和Firebird很难安装在同一台机器上,根据我的经验,这在这些天是很常见的。
FireDAC只需要fbclient.dll,不会回退到gds32.dll,所以不需要重命名。
ntjbwcob2#
在64位Windows中,
System32
文件夹包含64位DLL,SysWOW64
包含32位DLL。微软在命名方面一直很糟糕……gds32.dll
是Firebird安装程序(或其instclient
工具)仍然可以为仍然期望来自InterBase时间的旧名称的工具生成的东西。64位变体也称为gds32.dll
,但您应该使用的主库是fbclient.dll
(gds32.dll
要么是fbclient.dll
的副本,要么是将调用重定向到fbclient.dll
的shim)。如果您将Firebird安装程序配置为安装客户端库,则它将在
%WINDIR%\System32
中安装64位DLL,在%WINDIR%\SysWOW64
中安装32位DLL。您应该可以在那里找到fbclient.dll
库,除非您显式地取消选中 “Copy Firebird client library todirectory?" 选项,但选中 “Generate client library as GDS32.DLL for legacy InterBase support?“.此外,Firebird的安装目录(默认为
C:\Program Files\Firebird\Firebird_4_0
)本身在主安装目录中包含一个64位的fbclient.dll
,在其WOW64
目录中包含一个32位的变体。