其他分享
首页 > 其他分享> > [EmguCV]CvInvoke的类型初始化设定发生例外 (CvInvoke TypeInitialization Exception) 处理

[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 类型初始化设定发生例外图示:

cvinvoke_typeinitialization_exception

原因一:发布平台与安装的EmguCV开发版本平台是否一致

如果因为电脑平台是x64架构而下载的是x64版本的EmguCV,或是 打算开发x64架构,请记得在debug或是release把平台也改成x64,不同的版本,会出现此例外问题

x64_platform

原因二:CvInvoke类库有无参考到openCV动态函数库

CvInvoke里面提供了很多影像处理的基本方法,并且他们全部都是接自openCV的DLL函数库,如下图撷取自EmguCV官网

并且,如果你亲自去看的话也会发现其实里面也调用openCV的函数库方法来做处理;通常有可能是因为没有把这些参考路径加入到项目中,所以让项目在执行时找不到(此问题和原因一无关联,即便你是下载x86版本,如果没有注意到这部分也会发生例外)

cvInvoke

所以要确认是否在安装EmguCV时,有把OpenCV的DLL加入参考路径(例如x86版本会在在EmguCV的binx86底下有)

基本上这部分如果以照着安装篇来做就不会发生,因为参考路径已经提到如何加入。

但是通常为了直接测试,建议可以直接在项目中加入openCV的DLL文件,把binx86中的dll加入到项目中,并选择属性永远输出,

1. 项目右键->加入现有项目->加入binx86下的opencv dll(2.4.0为例可加入opencv_core240.dll与opencv_imgproc240.dll,其余的依需求加入)

Add openCV

2.加入后对DLL右键->属性->复制到输出目录改成永远输出

always output

然后编译执行,他就会把文件复制到输出目录直接从那边找到参考路径,也就不会有例外发生

结论


以上就是本人通常遇到此问题的快速排除方法,希望遇到的人也可以透过这篇排除问题而有帮助到

参考数据

Setting up EMGU C Sharp


文章中的叙述如有观念不正确错误的部分,欢迎告知指正 谢谢 =)

另外要转载请附上出处 感谢

原文:大专栏  [EmguCV]CvInvoke的类型初始化设定发生例外 (CvInvoke TypeInitialization Exception) 处理




标签:初始化,Exception,加入,TypeInitialization,EmguCV,例外,CvInvoke
来源: https://www.cnblogs.com/petewell/p/11474217.html