2011-03-02 64 views
0

我幾乎可以肯定,這是不可能的,但它值得一問...是否有可能強制在32位進程中運行的.NET dll像「64位進程一樣運行」?

我們有一個.NET DLL,從我們的VB6應用程序被調用。 VB6應用程序運行在一個32位的進程中,因此該DLL運行在相同的進程中(它被編譯爲任何cpu) 因此,當我在ODBC中訪問ODBC數據庫時,將僅使用32位驅動程序,因爲這是它認爲它需要(記錄數據庫是Pervasive PSQL)

當應用程序運行在64位計算機上(當只安裝64位ODBC驅動程序時),我的問題出現,因爲它無法找到合適的驅動程序使用。

那麼,有沒有辦法迫使.NET的DLL在64位進程中運行(編譯爲64不起作用,因爲COM互操作寄存器是不允許的)

這不一定是一個問題在這個時候,因爲我可以安裝32位驅動程序,但在將來的某個時間點,我可以想象,32位驅動程序可能無法使用,因此我將成爲衆所周知的小溪。

+1

沒有道理,你忘記了另一條小溪。沒有VB6槳的那個。 – 2011-03-02 19:40:23

+0

遠離VB6不是一種選擇,因爲可能需要3年的時間重寫代碼。 – 2011-03-03 09:02:07

回答

2

不,沒有辦法讓任何32位進程表現得像是64位一樣。我能想到的最好的方法是使用2個過程。

  1. 其在32位模式下運行和裝入您的DLL
  2. 64位方法,該方法實際上訪問駕駛員的VB6應用。

有可能使用多種不同的選擇32個和64位進程之間進行通信:WCF說到這裏介意。

+0

還有哪些其他選項?我認爲VB6應用程序無法調用WCF服務。 – 2011-03-03 09:06:43

相關問題