[EmguCV]CvInvoke的类型初始化设定发生例外 (CvInvoke TypeInitialization Exception) 处理
作者:互联网
在安装篇,我们介绍了如何安装EmguCV到你的Visual Studio上,但是有时候当你一切都准备就绪,要开始执行范例程序时,你可能会遇到编译器跳出CvInoke的类型初始化设定发生例外 (CvInvoke TypeInitialization Exception) 的问题,但是又不知道如何去修改他
本篇的文章除了希望介绍给遇到CvInoke 例外问提的朋友们一个快速地排除方法之外,也是我们一个笔记,自从知道这问题后,即便再次遇到也可以快速排除
前言
在安装篇,我们介绍了如何安装EmguCV到你的Visual Studio上,但是有时候当你一切都准备就绪,要开始执行范例程序时,你可能会遇到编译器跳出CvInoke的类型初始化设定发生例外 (CvInvoke TypeInitialization Exception) 的问题,但是又不知道如何去修改他
本篇的文章除了希望介绍给遇到CvInoke 例外问提的朋友们一个快速地排除方法之外,也是我们一个笔记,自从知道这问题后,即便再次遇到也可以快速排除
CvInvoke 类型初始化设定发生例外 (TypeInitialization Exception )
其实这个例外会出现的原因基本上只有两大个而已,就是“发布平台与安装的EmguCV开发版本平台是否一致” 与 “CvInvoke类库有无参考到openCV动态函数库”
每次遇到这个问题也都是这两个原因之一
以下是CvInvoke 类型初始化设定发生例外图示:
原因一:发布平台与安装的EmguCV开发版本平台是否一致
如果因为电脑平台是x64架构而下载的是x64版本的EmguCV,或是 打算开发x64架构,请记得在debug或是release把平台也改成x64,不同的版本,会出现此例外问题
原因二:CvInvoke类库有无参考到openCV动态函数库
CvInvoke里面提供了很多影像处理的基本方法,并且他们全部都是接自openCV的DLL函数库,如下图撷取自EmguCV官网
并且,如果你亲自去看的话也会发现其实里面也调用openCV的函数库方法来做处理;通常有可能是因为没有把这些参考路径加入到项目中,所以让项目在执行时找不到(此问题和原因一无关联,即便你是下载x86版本,如果没有注意到这部分也会发生例外)
所以要确认是否在安装EmguCV时,有把OpenCV的DLL加入参考路径(例如x86版本会在在EmguCV的binx86底下有)
基本上这部分如果以照着安装篇来做就不会发生,因为参考路径已经提到如何加入。
但是通常为了直接测试,建议可以直接在项目中加入openCV的DLL文件,把binx86中的dll加入到项目中,并选择属性永远输出,
1. 项目右键->加入现有项目->加入binx86下的opencv dll(2.4.0为例可加入opencv_core240.dll与opencv_imgproc240.dll,其余的依需求加入)
2.加入后对DLL右键->属性->复制到输出目录改成永远输出
然后编译执行,他就会把文件复制到输出目录直接从那边找到参考路径,也就不会有例外发生
结论
以上就是本人通常遇到此问题的快速排除方法,希望遇到的人也可以透过这篇排除问题而有帮助到
参考数据
Setting up EMGU C Sharp
文章中的叙述如有观念不正确错误的部分,欢迎告知指正 谢谢 =)
另外要转载请附上出处 感谢
原文:大专栏 [EmguCV]CvInvoke的类型初始化设定发生例外 (CvInvoke TypeInitialization Exception) 处理
标签:初始化,Exception,加入,TypeInitialization,EmguCV,例外,CvInvoke 来源: https://www.cnblogs.com/petewell/p/11474217.html