C# 找不到OpenCV非托管DLL asp.net
我们正在构建一个web应用程序(C#.NET),它使用Emgu opencv包装器形式的非托管库。我们正在强制构建为32位(x86),并且我们正在使用32位版本的Emgu 所有这些在本地版本上都很有效,但当发布到我们的Web服务器时,openCV Dll无法加载:C# 找不到OpenCV非托管DLL asp.net,c#,asp.net,opencv,unmanaged,emgucv,C#,Asp.net,Opencv,Unmanaged,Emgucv,我们正在构建一个web应用程序(C#.NET),它使用Emgu opencv包装器形式的非托管库。我们正在强制构建为32位(x86),并且我们正在使用32位版本的Emgu 所有这些在本地版本上都很有效,但当发布到我们的Web服务器时,openCV Dll无法加载: System.DllNotFoundException Unable to load DLL 'opencv_core240': The specified module could not be found. (Exception
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)
我尝试了在stackoverflow和其他来源上发现的以下内容:
- 将非托管Opencv Dll放在单独的目录中,并将 path环境变量中此目录的路径,然后重新启动 网络服务李>
- 已测试服务器配置是否允许非托管代码 执行(是)
- 将非托管Opencv Dll放入system32\inetsrv和 SysWOW64\inetsrv目录
- 将非托管Opencv Dll放入 前面提到的文件夹
关于这个问题的最后一篇有用的帖子是在2008年,但是ben还没有提供傻瓜式的解决方案,所以非常感谢所有的帮助 根据错误描述和已执行的检查,似乎您尚未安装MSVCRT。确保tbb.dll也在路径中,因为opencv_core240.dll依赖于此。您可以在opencv/build/common/tbb下找到tbb.dll。几天前,我遇到了同样的问题,我尝试了我所知道的一切,但都没有解决问题。EmguCV在本地64位Windows 8 pc上运行良好,但在服务器(Windows Web服务器64位)上运行良好 但在我做了一些真正随机的事情后,问题得到了解决,如下所示: 服务器已经安装了VisualC++ 2008运行时,但再次
dll是Nvidia Cuda NPP库。要解决此问题,请将
nvcuda.dll
放入web服务器上的/bin
文件夹中。确保nvcuda.dll
必须是x86体系结构与服务器相同,或者如果web服务器具有x64体系结构,则必须是x64
将来,请在Dependence Walker中查看其他依赖项,并将此dll与父库一起放置。该dll是否已在开发机器上注册?i、 e via regsvr32应用程序池是否设置为以32位模式运行?DLL未在开发机器上注册(因此开发和Web服务器上的情况相同),并且应用程序池设置为允许32位应用程序(IIS7)如果您使用Dependes on opencv_core240.dll,web服务器上列出的所有dll是否都可用?Dependes抱怨找不到:MSVCP100.dll MSVCR100.dll,但是在安装VS2010 redist包(x86)后-仍然没有,很不幸,我们最终删除了对此库的任何引用,并使用了一种完全不同的方法。感谢您的回复,但是,我检查了,MSVCRT安装在Web服务器上。在您的bin文件夹中创建一个x86文件夹,并尝试复制opencv dll,如opencv_core240.dll和其他dll。这可能会修复模块未找到错误。之前应该提到过这一点,但我也尝试过,不幸的是,我没有幸运地感谢您,我在OpenCvSharp 2.4中遇到了同样的问题(而不是在本地机器上使用Emgu),这为我解决了问题。