我在64位系統上調用32位非託管DLL的函數。 我獲得的是: 函數
BadImageFormatException:嘗試加載格式不正確的程序。 (HRESULT異常:0x8007000B) ui
起初,我將個人項目設置爲Any CPU平臺,所以我將它們都更改成x86,但此錯誤仍在發生。 這真的是我所知道的惟一解決方案。 spa
DLL沒有損壞或任何東西,由於我能夠將它們與其餘程序一塊兒使用(我沒有源代碼)。 我想也許它沒有找到依賴,但我檢查了,他們都在那裏。 另外,在這種狀況下不會拋出DllNotFoundException
嗎? code
我還能夠作些什麼? 在您說「使用64位非託管DLL」以前,讓我指出沒有一個。 ;) orm
這篇文章有點偏離主題,但搜索此錯誤消息將我帶到了這裏。 get
若是您正在經過團隊系統構建並得到此錯誤,則構建定義過程選項卡具備「MSBuild平臺」設置。 若是將其設置爲「自動」,則可能會遇到此問題。 將其更改成「X86」也能夠解決錯誤。 io
在個人狀況下,我在C#中使用本機DLL。 此DLL依賴於其餘幾個缺失的DLL。 一旦添加了其餘DLL,一切正常。 form
我用「Windows」方式解決了這個問題。 檢查完全部設置,清理解決方案並重建後,我只需關閉解決方案並從新打開便可。 而後它工做,因此VS可能沒有在清潔過程當中擺脫一些東西。 當邏輯解決方案不起做用時,我一般會轉向不合邏輯的(或看似不合邏輯的)。 Windows不會讓我失望。 :) 搜索
若是您使用的是任何CPU ,則在選中「 首選32位」選項時可能會遇到此問題: bug
確保在項目屬性的Build選項卡中取消選中此選項!
在Visual Studio中 ,右鍵單擊您的項目 - >在左側窗格中單擊「 生成」選項卡,
在Platform Target下選擇x86(或者更常見的是與您連接的庫匹配的體系結構 )
我但願這能夠幫助別人! :)