DllNotFoundException与EmguCV团结

问题描述:

我试图使用捕捉类从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

如果你使用一个DLL作为一个插件,它应该是在资产/插件文件夹。如果该插件需要其他dll,它们应该位于项目文件夹的根目录中(或者位于Unity安装文件夹的Editor-folder中)。如果构建应用程序,则自然应该使dll可用,例如将它们添加到与可执行文件相同的文件夹中。

您可以尝试使用Dependency Walker追查异常。

另外我在Windows 8中遇到类似的问题,当插件需要highgui.dll时。一旦删除,没有例外(我从未真正发现问题是什么)。

+1

我复制并粘贴了编辑文件夹中的opencv_coreXXX和opencv_highguiXXX dll文件,并且错误不再出现。谢谢 ! – Aleph0