2011-06-01 76 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

相關問題