我試圖通過USB自帶一個需要被.NET C#類包裝的本機DLL附帶的CAN設備(供應商提供的源代碼)被包括在一個人的項目中。他們的示例應用程序針對.NET 2.0,其中我的應用程序面向.NET 4.0我能在他們的示例應用程序和調試都使用代碼就好了,但是,當我嘗試調試應用程序,我得到一個BadImageFormatException:當在.NET 4.0中加載本機DLL時發生BadImageFormatException
System.TypeInitializationException: The type initializer for 'TotalPhase.KomodoApi' threw an exception. ---> System.BadImageFormatException: An attempt was made to load a program with an incorrect format. (Exception from HRESULT: 0x8007000B)
他們的代碼之間唯一的區別和我似乎因爲他們的代碼是爲.NET 2.0構建的應用程序,並且(目前)我的代碼正在作爲.NET 4.0中的MSTest單元測試運行。這兩種解決方案都針對AnyCPU。我正在運行Windows 7旗艦版64位安裝。即使從AnyCPU更改爲x86也沒有任何區別。我怎樣才能讓這個本地DLL加載到AnyCPU項目中?
你有沒有試過將他們的應用程序重新定位到.Net 4.0?你能展示你如何與原生DLL進行互動嗎? – vossad01
本機dll編譯的目標平臺是什麼? x64或x32?你可以使用依賴來找出。或DumpBin/Headers xxx.dll –
+1爲DumpBin的建議,這有所幫助。我錯誤地從他們的SDK中選擇了錯誤的DLL。當我打算使用32位DLL時,我複製了64位DLL。該程序需要在32位客戶端上運行。 –