如何为Delphi xe安装64位客户端(运行32位且具有32位客户端) 我可以在同一台机器上同时运行32位客户端和64位客户端吗?
我正在开发64位应用程序,所以我需要64位客户端
使用我获得的32位客户端
sourceException {“尝试加载Oracle客户端库会引发BadImageFormatException。在安装了32位Oracle客户端组件的64位模式下运行时会出现此问题。”} System.Exception {System.InvalidOperationException}
答案 0 :(得分:4)
我在组织中已经多次看到,因为他们安装了64位操作系统(Windows 7 / Windows 2008 R2),他们认为必须安装64位Oracle客户端。
操作系统无法控制,应用程序会这样做。
Delphi XE是一个32位应用程序。它只能生成32位应用程序。
在您澄清问题后更新。
然后,客户端应用程序需要足够智能才能加载正确的库。通常,最后安装的客户端最终在系统路径上。这通常是 也是默认的家。
应用程序加载OCI库(OCI.DLL)它们通常使用loadlibrary('oci.dll')
执行此操作,它将在系统路径上找到OCI.DLL的版本。
我怀疑这是导致错误的原因。
可以使用完整路径名调用 loadlibrary
以指定要使用的客户端。 LoadLibrary('C:\app\oracle\product\11.2.0\client_1\bin\oci.dll')
默认情况下,Delphi在系统搜索路径上使用oracle home。
虽然我从未尝试过,但您应该可以指定完整版本 Delphi中dbxdrivers.ini文件中的OCI.DLL指定实际的oracle 你想要使用的家。
答案 1 :(得分:2)
从错误消息中,我想你问的是32位和64位Oracle客户端是否可以在同一台机器上共存。
显然,they can。我自己没有这样做,所以你可能需要挖掘更多细节。
答案 2 :(得分:1)
如果客户端意味着某些x64 dll被加载到Delphi的x86应用程序中,则无法做到这一点。如果客户端是其他进程并使用某种形式的进程间通信,则可以。
所以你的选择是:
答案 3 :(得分:1)
要从32位应用程序调用64位dll,请参阅A.Bouchez在this线程中的答案。