2011-06-01 40 views
1

如何为Delphi xe(运行32位并具有32位客户端)安装64位客户端 我可以在同一台机器上同时运行32位客户端和64位客户端吗?用于Delphi xe的64位Oracle客户端

我正在开发一个64位应用程序,所以我需要使用32位客户端64位客户端

我得到

sourceException {“尝试加载Oracle客户端库扔BadImageFormatException。这个问题会“System.Exception {System.InvalidOperationException}

+1

请修改您的标题以更准确地反映您希望解决的问题。即“64位Oracle客户端”将会有所帮助。 – 2011-06-01 20:59:59

回答

1

如果客户端的意思是某些x64 dll被加载到进入64位模式并且安装了32位Oracle客户端组件德尔福的x86应用程序,你不能这样做。如果客户是某个其他进程并使用某种形式的进程间通信,则可以这样做。

那么你的选择是:

  • 使用FreePascal的构建在x64“德尔福的客户
  • 使用德尔福棱镜(德尔福.NET)在Delphi
  • 建(64).Net客户端
  • Seprate无论是在不同的进程,并使用进程间通信的一种形式
  • 使用Oracle客户端
  • 使用另一种32位库的32位版本做了Oracle客户端不
1

要从32位应用程序中调用64位dll,请参阅A.Bouchez在this线程中的答案。

+0

它使用x64进程和进程间通信(内存映射文件) – 2011-06-01 17:43:35

2

从错误消息中,我认为您问的是32位和64位Oracle客户端是否可以在同一台计算机上共存。

显然,they can。我没有自己做过,所以你可能需要挖掘更多的细节。

4

我在组织中看到过很多次,因为他们安装了64位操作系统(Windows 7/Windows 2008 R2),他们认为他们必须安装64位Oracle客户端。

操作系统不控制这个,应用程序。

  • 如果您的应用程序是32位,它必须使用32位客户端。
  • 如果您的应用程序是64位,它必须使用64位客户端。

Delphi XE是一个32位应用程序。它只能生成32位应用程序。

在您澄清您的问题后更新。

  • 您可以在机器上安装多个Oracle客户端
  • 客户端可以是不同的版本或位数
  • 每个客户端必须安装到不同的Oracle Home

客户端应用程序,然后需要足够聪明以加载正确的库。通常,最后安装的客户端安装在系统路径上。这通常是 也是默认主页。

应用程序加载OCI库(OCI.DLL)它们通常会通过loadlibrary('oci.dll')执行此操作,它将在系统路径中查找OCI.DLL的版本。

我怀疑是导致你的错误发生了什么。

loadlibrary可以使用完整路径名称来指定要使用的客户端。 LoadLibrary('C:\app\oracle\product\11.2.0\client_1\bin\oci.dll')

默认情况下,Delphi在系统搜索路径中使用oracle主目录。

虽然我从来没有尝试过,你应该能够在Delphi中dbxdrivers.ini文件中指定OCI.DLL的完整版本 指定实际的Oracle 家里,你要使用。

+2

Delphi XE是一个32位应用程序,它只能生成32位应用程序。您可以使用32位应用程序生成64位应用程序:它被称为交叉编译器。例如FPC可以从32位交叉编译链AFAIK产生64位exe文件。 – 2011-06-01 19:52:52

相关问题