2014-03-12 53 views
0

我試圖使用捕捉類從EmguCV上的Unity Pro,但每次我調用它的構造函數,我有以下錯誤:DllNotFoundException與EmguCV團結

DllNotFoundException: opencv_core249 Emgu.CV.CvInvoke..cctor() Rethrow as TypeInitializationException: An exception was thrown by the type initializer for Emgu.CV.CvInvoke Emgu.CV.Capture..ctor (Int32 camIndex)

我讀過解決問題例如,在Visual Studio中,您只需將opencv_coreXXX和opencv_highguiXXX複製並粘貼到輸出文件夾,但此解決方案似乎不適用於Unity。

問題是,Unity在正確的文件夾(我把所有的EmguCV DLL的輸出文件夾)搜索,但似乎沒有找到DLL。

要統一安裝EmguCV,我只是跟着這個傢伙以下鏈接中描述的步驟:http://forum.unity3d.com/threads/182600-OpenCV-(EMGUCV-wrapper)-integration-in-Unity

+0

請記住,如果它實際上是另一個缺少的DLL,Unity將會給出完全相同的錯誤。也就是說,它試圖加載的DLL正在使用。所以確保所有的依賴關係都可用。如果它們不是,它會報告DLL未找到,即使它存在。 – Bart

回答

1

如果你使用一個DLL作爲一個插件,它應該是在資產/插件文件夾。如果該插件需要其他dll,它們應該位於項目文件夾的根目錄中(或者位於Unity安裝文件夾的Editor-folder中)。如果構建應用程序,則自然應該使dll可用,例如將它們添加到與可執行文件相同的文件夾中。

您可以嘗試使用Dependency Walker追查異常。

另外我在Windows 8中遇到類似的問題,當插件需要highgui.dll時。一旦刪除,沒有例外(我從未真正發現問題是什麼)。

+1

我複製並粘貼了編輯文件夾中的opencv_coreXXX和opencv_highguiXXX dll文件,並且錯誤不再出現。謝謝 ! – Aleph0