大家好,我是華山自控編程的朱老師
前幾天一個學員在學習c#調用halcon動態庫時。一直報錯:System.DllNotFoundException:“無法加載 DLL“halcon”: 找不到指定的模塊。 (異常來自 HRESULT:0x8007007E)。”,不知道什么原因。 報錯代碼截圖如下:
當時開發背景是這樣的:該同學在自己電腦A上開發,可以編譯,運行成功。然后將代碼部署到了另一臺機器B上。安裝了vs后,編譯沒有問題,一點擊運行按鈕后,就報了上面這個錯誤了 。折騰了好久,還是沒有什么進展。其實新手們對這個問題往往很頭疼。不知道是哪個依賴沒有添加進來。下面我們就對這個問題進行詳細分析,并給出解決方案。
問題分析:
這個代碼第27行報錯提示很清楚:System.DllNotFoundException:“無法加載 DLL“halcon”: 找不到指定的模塊。翻譯成中文就是沒有找到dll:halcon,順著這個思路我們去運行正常的A電腦上搜索halcon.dll相關的動態庫,結果發現確實存在有這樣的一個動態庫:halcon.dll。然后再去B電腦上搜索halco.dll,沒有找到。然后我們將halcon.dll文件復制到應用程序FindBoltCount.exe相同目錄下,程序文件結構如下:
效果如下:
問題結論:
這個問題是開發部署過程中經常遇到的問題,解決方法也不止一個:下面我們梳理一下解決方法:
1)簡單解決方法:把缺少的模塊dll(如halcon.dll、halcondotnet.dll)放到運行目錄,可以解決。這種方法適用于現場應急狀態,適用于臨時解決比較著急的現場問題的臨時方案。但是每個工程都要單獨添加進去(不推薦)
2)一般解決方法:把halcon.dll等相關庫放到system32下面去,應用程序運行時,會自動在該目錄下尋找相關依賴,一般情況下也沒有必要這樣去做。
3)根本解決方法:把Halcon運行目錄添加到系統環境變量中(windows系統環境支持都需要在PATH目錄),因為這個Halcon運行目錄里面還有很多視覺采集相關的dll庫需要依賴,特別是很多人寫halcon的相機采集的時候,其實整個目錄里面的dll都是需要依賴的,也就是halcon運行庫Runtime,所以上面那種簡單解決方法是不能有效解決其他halcon動態庫的使用需求的,你要拷貝好多依賴,把整個halcon運行目錄bin都拷貝到system32下面去?沒必要。所以我們最終這樣做:Win10打開設置:此計算機->右鍵屬性->系統“高級系統設置”->系統屬性->高級->環境變量”。 然后將halcon安裝目錄的bin文件夾路徑添加到path屬性,以分號結尾即可
以上就是初學者在學習c#調用halcon等第三方動態庫時常見的問題。總結如下:
1:動態庫編譯錯誤:添加引用,把第三方動態庫添加到vs程序里面。
2:動態庫運行錯誤,將動態庫添加到程序運行目錄,或者將動態庫文件夾添加到windows環境變量配置中
以上就是我個人對C#調用halcon等第三方動態庫時的一些經驗見解,比較淺顯。不當之處敬請指正。
特別聲明:以上內容(如有圖片或視頻亦包括在內)為自媒體平臺“網易號”用戶上傳并發布,本平臺僅提供信息存儲服務。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.