未找到asp.net的OpenCV非托管DLL

Art*_*hur 5 c# asp.net opencv unmanaged emgucv

我们正在构建一个Web应用程序(C#.NET),它使用Emgu opencv包装器形式的非托管库.我们正在强制构建为32位(x86),我们正在使用32位版本的Emgu.

所有这些在本地构建上都很好用,但是当发布到我们的web服务器时,openCV Dll(s)无法加载:

System.DllNotFoundException
Unable to load DLL 'opencv_core240': The specified module could not be found. (Exception from HRESULT: 0x8007007E)

System.TypeInitializationException: The type initializer for 'Emgu.CV.CvInvoke' threw an exception. ---> System.DllNotFoundException: Unable to load DLL 'opencv_core240': The specified module could not be found. (Exception from HRESULT: 0x8007007E)
   at Emgu.CV.CvInvoke.cvRedirectError(CvErrorCallback errorHandler, IntPtr userdata, IntPtr prevUserdata)
   at Emgu.CV.CvInvoke..cctor()
   --- End of inner exception stack trace ---
   at Emgu.CV.CvInvoke.cvCreateImageHeader(Size size, IPL_DEPTH depth, Int32 channels)
   at Emgu.CV.Image`2.AllocateData(Int32 rows, Int32 cols, Int32 numberOfChannels)
   at Emgu.CV.Image`2.set_Bitmap(Bitmap value)
   at Emgu.CV.Image`2..ctor(Bitmap bmp)
Run Code Online (Sandbox Code Playgroud)

我尝试了以下在stackoverflow和其他资源上发现的东西:

  • 将非托管Opencv Dll放在一个单独的目录中,并将路径放在路径环境变量中,然后重新启动webservice.
  • 测试服务器配置是否允许非托管代码执行(是)
  • 将非托管Opencv Dll放在system32\inetsrv和SysWOW64\inetsrv目录中
  • 将非托管Opencv Dll放在前面提到的文件夹中的子目录'x86'中

我理解这一点:http: //msdn.microsoft.com/en-us/library/ms366723.aspx

是所有麻烦的原因,但我不明白为什么编辑路径变量以包含包含Dll的正确路径并不能解决任何问题.

关于这个问题的最后有用的帖子是在2008年,但是还没有提供任何万无一失的解决方案,所以所有的帮助都非常感谢!

Luc*_*ngo 0

从您的错误描述和您已经执行的检查来看,您似乎尚未安装 MSVCRT。