gpt4 book ai didi

c# - asp.net 未找到 OpenCV 非托管 DLL

转载 作者:太空狗 更新时间:2023-10-29 23:33:18 25 4
gpt4 key购买 nike

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

所有这些在本地构建上运行良好,但是当发布到我们的网络服务器时,openCV Dll 无法加载:

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 放在一个单独的目录中,然后将路径环境变量中该目录的路径,并重启网络服务。
  • 测试服务器配置是否允许非托管代码执行(是)
  • 将非托管的 Opencv Dll 放入 system32\inetsrv 和SysWOW64\inetsrv 目录
  • 将非托管 Opencv Dll 放在目录中的子目录“x86”中在提到的文件夹之前

我的理解是: http://msdn.microsoft.com/en-us/library/ms366723.aspx

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

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

最佳答案

确保 tbb.dll 也在路径中,因为 opencv_core240.dll 对此有依赖性。您可以在 opencv/build/common/tbb 下找到 tbb.dll。

关于c# - asp.net 未找到 OpenCV 非托管 DLL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10930610/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com