2010-09-08 155 views
1

我已經構建並將我的服務從vs2010安裝到64位機器上。服務64位機器上的32位dll

當我的服務引用32位dll(spssio32.dll是精確的)時出現問題 - 我在事件查看器中遇到錯誤:「System.BadImageFormatException:嘗試加載帶有不正確的程序的程序格式。(來自HRESULT的例外:0x8007000B)「

任何關於此事的幫助將不勝感激。

Regards, Byron Cobb。

回答

3

您的服務代碼是用.NET語言編寫的嗎?如果是這樣,您需要將其標記爲定位x86而不是Any CPU(通過項目屬性/構建/平臺目標)。

(默認情況下,.NET代碼靶向Any CPU,這意味着在64位機器上,將編譯成64位機器碼。由於這樣的64位的代碼不能加載32位的DLL,這會導致故障等在代碼依賴於32位DLL的情況下,即使在64位機器上也需要始終編譯爲32位機器代碼,因此將目標平臺設置爲x86。)

+0

我正在使用Visual Studio 2010和我的構建模式在發佈設置爲x86。 – Bob 2010-09-08 11:15:43

+0

啊 - 我的解決方案被設置爲可編譯爲任何CPU,即使我在x86中使用它的解決方案屬性。它現在可以工作 - 謝謝,你是一個拯救生命的人! – Bob 2010-09-08 11:32:33