当前位置: 代码迷 >> C# >> C#解决“Emgu.CV.CvInvoke”的类型初始值设定项引发错误 的其中一个办法
  详细解决方案

C#解决“Emgu.CV.CvInvoke”的类型初始值设定项引发错误 的其中一个办法

热度:238   发布时间:2016-05-05 05:00:22.0
C#解决“Emgu.CV.CvInvoke”的类型初始值设定项引发异常 的其中一个办法

首先要说明的是为什么说是"其中一个办法", 因为引起这个问题的理由有好多个, 这里只提我遇到的一种.

我遇到这个问题的根本原因是EmguCV和OpenCV版本不匹配

这里我重现一下找到原因的过程:


1. 运行程序直接崩溃, 然后debug时找到了在这里崩溃的:



2. 查看详细信息, 点看左边的小三角, 发现了根源:


上面有一句: "{"无法加载 DLL“opencv_core231”: 找不到指定的模块。 (异常来自 HRESULT:0x8007007E)。"}"

从网上下一个opencv_core231.dll放到debug文件夹中可以解决问题, 但毕竟不是长久之计.


3. 然后我就想了, 为什么会缺少231呢, 我的emgu应该对应290呀, 于是我重新点开引用添加界面, 


发现问题了! 最近添加里有两批EMGU的dll, 一批是2.9的, 一批是2.3的, 我正是引用了2.3的才出现了这种错误, 估计是我下了别人的程序, 把别人旧版本的emgu的dll引用进来了吧.

把2.9的引用进来就解决问题了.


最后要说的是OpenCV版本和EmguCV版本有什么关系, 因为C#计算是比较慢的, 要想加速底层计算还得用C++等语言来处理, 于是有些EmguCV函数是要调用OpenCV库的,一般一个EmguCV版本对应一个OpenCV版本.