Emgu.CV单机可运行,但部署Web项目遇到执行问题之解决方法

最近一个项目,使用Emgu.CV单机可运行,但部署Web项目遇到相关算法时无法执行的问题。

开始时使用nuget引用到项目,所以用了最新的3.3版本,结果项目在本地运行是可以的,没有任何错误。

但是部署到服务器上web项目是可以工作,但涉及到CV相关算法的就无法正确运行,也就是Emgu.Cv没用。设置了iis应用程序池可32位运行、各种拷贝dll、各种生成x86, x64就是不行、甚至在server上我装了vs2015、opencv3.3、emgu.cv也是不行。完全无语了。
那个什么cvextern.dll的就是不能成功运行。
项目中Log的错误信息如下:
09:47:31.618 ERROR Pedestrian: System.TypeInitializationException: “Emgu.CV.CvInvoke”的类型初始值设定项引发异常。 ---> System.DllNotFoundException: 无法加载 DLL“cvextern”: 找不到指定的模块。 (异常来自 HRESULT:0x8007007E)。
   在 Emgu.CV.CvInvoke.RedirectError(CvErrorCallback errorHandler, IntPtr userdata, IntPtr prevUserdata)
   在 Emgu.CV.CvInvoke..cctor()
   --- 内部异常堆栈跟踪的结尾 ---
   在 Emgu.CV.Image`2..ctor(String fileName)
   在 DIPVL.API.PedestrianHOGController.detect(Double finalThreshold, Int32 stride_w, Int32 stride_h, Int32 padding_w, Int32 padding_h, Double scale, Int32 hitThreshold, String s)
stackoverfollow上的一些解决方法:
https://stackoverflow.com/questions/35955105/emgucv-cvextern-system-dllnotfoundexception
https://stackoverflow.com/questions/46183932/emgu-could-not-found-cvextern-in-iis-server
按照这些方法尝试之后都无法解决问题。。。艹
 
最后,心想可能是版本太新吧,于是决定使用低一些的3.1的版本。
https://sourceforge.net/projects/emgucv/files/?source=navbar
但nuget删除Emgu.CV之后,无法安装3.1版本,报无法删除什么什么安装包,怎么搞都不行。。。
于是只能手动下载Emgu.CV 3.1的zip包。
解压下来后,手动浏览添加引用dll,项目编译通过。但部署后还是不能用。心中一个大写的艹。冷静。。。
但是这时,拷贝dll的方法可以用了,把x86下的所有dll拷贝到项目的Bin目录下,图形算法运行正确了。
最后使用的是release x86部署。

转载于:https://www.cnblogs.com/firemanpapa/p/8297846.html

你可能感兴趣的:(Emgu.CV单机可运行,但部署Web项目遇到执行问题之解决方法)