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

1 篇文章 0 订阅

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

我遇到这个问题的根本原因是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版本.


  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值