2019年5月26日 星期日

[Log Book] wpf 使用Halcon dotnet資料型態發生 BadImageFormatException HRESULT: 0x8007000B

[問題描述]
在c sharp wpf中使用Halcon的資料型態HObject 及HImage時,一直發生的錯誤訊息:「
於 System.BadImageFormatException 擲回例外狀況: 'halcondotnet.dll'
於 System.BadImageFormatException 擲回例外狀況: 'halcondotnet.dll'
In ImageTypeConverter.Bitmapimage2Hobject: 試圖載入格式錯誤的程式。 (發生例外狀況於  HRESULT: 0x8007000B)


[解題思路]
一開始以為是執行緒的問題,因為在catch處,將Exception中的成員StackTrace打開看,看到HalconDotNet.HalconAPI.CreateProcedure的相關資訊,如下圖:
所以推測是載入的BitmapImage咬住執行緒,導致在函式在使用的時候出了問題,所以還複製BitmapImage再執函式,但還是發生一樣的情形。
後來突然想到halcondotnet好像只能在x64位元的平台執行,所以就去檢查exe檔的編譯平台。

[解決方法]
在專案按右鍵->屬性->建置,將其中「建議使用32位元」選項的勾拿掉就可以了

這個真的要特別注意,因為若「建議使用32位元」選項有打勾,一樣可以編譯成功,但在使用上就會有問題。

參考資料:
這封郵件來自 Evernote。Evernote 是您專屬的工作空間,免費下載 Evernote

沒有留言:

張貼留言