delphi Firebird fbclient.dll和gds32.dll用于64位程序的位数?

hrysbysz  于 2023-06-05  发布在  其他
关注(0)|答案(2)|浏览(269)

在将我的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

考虑到它实际上是required to use 64-bit DLLs from a 64-bit program,似乎我在任何地方都没有64位fbclient.dll
在Firebird安装过程中,我们选中了在Windows系统目录中创建gds32.dll的选项,即fbclient.dll的副本被重命名为Interbase客户端库gds32.dllsource)。
更糟糕的是,根据sigcheck,C:\Windows\System32C:\Windows\SysWow64中的两个gds32.dll版本分别是64位和32位。

这是怎么回事
我必须在某个地方找到64位fbclient.dll吗?
为什么gds32.dll的两个副本都报告了奇怪的位数?我是否误解了SysWow 64的功能?
我已经尝试过在当前安装的基础上重新安装Firebird(所以还没有完全删除/重新安装)

s4n0splo

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,所以不需要重命名。

ntjbwcob

ntjbwcob2#

在64位Windows中,System32文件夹包含64位DLL,SysWOW64包含32位DLL。微软在命名方面一直很糟糕……
gds32.dll是Firebird安装程序(或其instclient工具)仍然可以为仍然期望来自InterBase时间的旧名称的工具生成的东西。64位变体也称为gds32.dll,但您应该使用的主库是fbclient.dllgds32.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位的变体。

相关问题