C# 无法加载DLL';opencv_core290
在我的winforms应用程序中,我需要使用一些Emgu.CV库(我已经安装了Emgu 2.9) 问题是我得到了以下错误:C# 无法加载DLL';opencv_core290,c#,winforms,emgucv,C#,Winforms,Emgucv,在我的winforms应用程序中,我需要使用一些Emgu.CV库(我已经安装了Emgu 2.9) 问题是我得到了以下错误: System.TypeInitializationException was unhandled HResult=-2146233036 Message=The type initializer for 'Emgu.CV.OCR.Tesseract' threw an exception. Source=Emgu.CV.OCR Typ
System.TypeInitializationException was unhandled
HResult=-2146233036
Message=The type initializer for 'Emgu.CV.OCR.Tesseract' threw an exception.
Source=Emgu.CV.OCR
TypeName=Emgu.CV.OCR.Tesseract
StackTrace:
at Emgu.CV.OCR.Tesseract..ctor(String dataPath, String language, OcrEngineMode mode)
at ANPR.LicensePlateDetector..ctor(String dataPath) in c:\Users\blabla\Visual Studio 2012\Projects\ANPR\ANPR\LicensePlateDetector.cs:line 30
at ANPR.Form1..ctor() in c:\Users\blabla\Visual Studio 2012\Projects\ANPR\ANPR\Form1.cs:line 22
InnerException: System.TypeInitializationException
HResult=-2146233036
Message=The type initializer for 'Emgu.CV.CvInvoke' threw an exception.
Source=Emgu.CV
TypeName=Emgu.CV.CvInvoke
StackTrace:
at Emgu.CV.CvInvoke.CV_MAKETYPE(Int32 depth, Int32 cn)
at Emgu.CV.OCR.Tesseract..cctor() in c:\Emgu\emgucv-windows-universal-cuda 2.9.0.1922\Emgu.CV.OCR\Tesseract.cs:line 26
InnerException: System.DllNotFoundException
HResult=-2146233052
Message=Unable to load DLL 'opencv_core290': The specified module could not be found. (Exception from HRESULT: 0x8007007E)
Source=Emgu.CV
TypeName=""
StackTrace:
at Emgu.CV.CvInvoke.cvRedirectError(CvErrorCallback errorHandler, IntPtr userdata, IntPtr prevUserdata)
at Emgu.CV.CvInvoke..cctor() in c:\Emgu\emgucv-windows-universal-cuda 2.9.0.1922\Emgu.CV\PInvoke\CvInvoke.cs:line 266
尝试实例化新的Tesseract对象时会发生这种情况:
var tesseract = new Tesseract("", "eng", Tesseract.OcrEngineMode.OEM_TESSERACT_CUBE_COMBINED);
由于引用“opencv_core290”不起作用,我尝试了提供的解决方法。基本上,我将.dll复制到我的项目中,使用“添加现有资源”进行添加
并将其属性修改为“始终复制”。然而,这并不奏效。谢谢你的帮助 我也有这个问题。您应该将x86或x64文件夹中的DLL从“yourEmguFolder/bin”复制到项目的输出目录。然后再次构建项目并运行
我根据本页的描述解决了这个问题。确切地说,opencv DLL应该存在于您的应用程序bin\debug或bin\release文件夹中。您必须关心的主要问题是,x64和x86 DLL的DLL文件夹结构应该保持不变 i、 e将emgu\bin文件夹中的x86和x64文件夹复制到应用程序的调试文件夹中 用于发布-将这两个文件夹添加到VS中的项目中,然后将其属性设置为“始终复制”,这将自动处理文件夹结构
我也面临同样的问题,这个解决方案对我很有效 当我添加opencv_core290.dll、opencv_highgui290.dll、opencv_imgproc290.dll时, 我在下面遇到了同样的问题: System.DllNotFoundException:无法加载DLL“opencv_core290”:找不到指定的模块。(来自HRESULT的异常:0x8007007E) 在Emgu.CV.CvInvoke.cvRedirectError(CvErrorCallback errorHandler、IntPtr userdata、IntPtr prevUserdata)
在解决了这个问题后,我添加了一个dll文件,名为cudart64_55.dll,并解决了这个问题。你确定你的dll在“bin”文件夹中的exe旁边吗?@AhmetKakıcı再次检查你的问题是否类似于:这就是我问的原因。这没有太大帮助:(这会很有帮助,但发布项目时该怎么做。将这些非托管DLL放在何处这是一种“暴力”解决方案,因为您不需要所有文件,但要达到目标,需要+1