类型初始化异常
Posted
技术标签:
【中文标题】类型初始化异常【英文标题】:Type initialization exception 【发布时间】:2012-09-07 15:48:43 【问题描述】:我创建了 imageHolder 类:
public class ImageHolder : Image<Bgr, Byte>
private String imagePath;
public ImageHolder(String path):base(path)
this.imagePath = path;
public String imgPathProperty
get
return imagePath;
set
imagePath = value;
我创建类的实例并初始化它,如下所示:
private ImageHolder originalImageHolder;
originalImageHolder = new ImageHolder(openFileDialog.FileName);
在运行时我得到这个异常:
“Emgu.CV.CvInvoke”的类型初始化程序引发异常。
这是解决方案资源管理器窗口:
知道为什么会出现此异常以及如何修复它吗?
提前谢谢你。
【问题讨论】:
好像找不到opencv_core240.dll;这需要在同一个文件夹中吗? 不完全是这个的副本(因为没有接受的答案)但也许this other question 上的一些信息和答案可能对你有用 重申和扩展@zimdanen 所说的内容,InnerException 文本指出它无法加载 zimdanen 提到的 DLL。有关说明,请参阅 ***.com/questions/2066180/…。 【参考方案1】:只要静态构造函数抛出异常,或者当您尝试访问静态构造函数抛出异常的类时,就会抛出 TypeInitializationException (您看到的异常) - 它的 InnerException 属性是包含实际引发的异常的详细信息 - 这是您需要调查的异常。
在这种情况下,从您的屏幕截图来看,问题似乎是找不到 DLL“opencv_core240.dll”。这可能有多种原因
找不到 DLL 找不到 DLL 的依赖项之一 DLL 的图像格式不正确(32 位而不是 64 位)我建议你看看this question,看看那里的任何建议是否对你有帮助。
【讨论】:
【参考方案2】:检查此字段对我有用。在项目→属性→构建(主/启动项目)
【讨论】:
是的 - 这也为我解决了这个问题。原来我的项目需要的 DLL 只能以 32 位运行!哦!【参考方案3】:我通过重新安装 MSVCRT 9.0 SP1 x86解决了这个问题
【讨论】:
以上是关于类型初始化异常的主要内容,如果未能解决你的问题,请参考以下文章
Emgu.CV.CvInvoke”的类型初始值设定项引发异常。