我有一個代碼示例,應該檢測我的canon 550d數碼相機,這樣我就可以通過電腦控制相機。 我剛剛下載從這裏源文件:爲什麼我會變得badimagexception?
我在Visual Studio 2012專業版中創建一個新的項目;我的電腦運行Windows 8 64位。 我添加了所有.cs文件,並且還複製了我在註冊後從佳能網站下載的所有dll文件。
我第一次運行該程序並單擊連接按鈕時,發現一個DLL丟失的異常。由於無法添加引用的dll,因此我將它們複製到Debug目錄。
缺少DLL是PRSDK.dll,所以我找到並下載了DLL,並將其複製。
現在,當我點擊連接按鈕,我得到一個不同的異常:
BadImageFormatException:試圖加載程序格式不正確。 (異常來自HRESULT:0x8007000B)
唯一的例外是在文件Camera.cs,就行了:
err = prAPI.PR_StartSDK();
我用Google搜索這個異常,並發現,一些人已經改變了項目平臺和目標x86,所以我嘗試了它 - 我嘗試將它更改爲x86,x64,AnyCpu,一切,但它沒有幫助。
也許PRSDK.dll文件是舊的,不能在Windows 8中使用?
這是我的SkyDrive中的項目/解決方案的鏈接,如果有人可以下載它並嘗試在他的機器上運行它並找到解決方案?
https://skydrive.live.com/redir?resid=EB1C71C44C3976D5!201&authkey=!AErpIgyllPAgH9w
稱爲項目:Canon_Camera_Control
這很搞笑。對自己不要下載他的解決方案並看着dll感到羞恥。偶爾我會得到下載的mp3,這些mp3實際上是帶有mp3擴展名的404頁面;從未在dll下載中看到它。 :D(雖然,有點蹩腳的.net,它不區分「試圖加載這個dll,但它是錯誤的格式」,vs「試圖加載這個DLL,你給我什麼廢話,這是不是甚至沒有DLL!「) – neminem 2013-05-02 18:08:24
Carko哪些文件不是.dll?我在PRSDK.dll和DPPDLL.dll上做了屬性,例如這兩個dll文件,我在屬性中看到:應用程序擴展名(.dll)是否可以請你指定哪些文件不是.dll我的意思是不是真的dll,你是怎麼做到的設法發現他們不是DLL,所以我會知道在未來做到這一點? – 2013-05-02 18:10:11
Carko你的意思是這兩個文件是不是真的DLL? PRLIB.dll和PRSDK.dll – 2013-05-02 18:11:27