EmguCV 64位生成运行时错误

本文关键字:运行时错误 64位 EmguCV | 更新日期: 2023-09-27 18:12:31

我在W7/x64操作系统上使用.net 4.0和VS2010将现有的32位EmguCV(2.3版(构建为64位时遇到问题。我已经购买了商业许可证,如果这很重要的话,并从收据中提供的链接下载。

错误为

System.TypeInitializationException was unhandled
 Message=The type initializer for 'Emgu.CV.CvInvoke' threw an exception.
 Source=Emgu.CV
 TypeName=Emgu.CV.CvInvoke

我遵循了本文中提供的说明。事实上,我在文章中使用了示例项目,它们用V2.2构建得很好,但当我用V2.3二进制文件(emgu和opencv(替换时,会遇到错误。

是否有人成功构建了Emgu(版本2.3.x(x64项目?请提供一些指导。

EmguCV 64位生成运行时错误

此错误的原因(如果其他人遇到同样的问题(是程序无法访问opencv_imgproc231.dll或opencv_core231.dll,即使它们存在于输出"bin"目录中。

有两种解决方案:

  1. 将它们添加到项目中,并将它们的属性设置为copy always,因为它们是EMGU的两个关键文件。

  2. 如果步骤1不起作用,请用新副本替换bin文件夹中的当前密钥文件。

如果这两种方法都失败了,那么构建可能会出现问题,所以请从Sourceforge下载EMGU的新副本,然后重试。该错误稍后将被纳入一篇技术文章中,以便更清楚地解释如何解决它

干杯,Chris

无需将它们添加到项目中;VS不会让你。只需打开FaceRecognizer.cspublic static partial class CvInvoke和变化:

[DllImport(CvInvoke.EXTERN_LIBRARY, CallingConvention = CvInvoke.CvCallingConvention)] 

至:

[DllImport(Emgu.CV.CvInvoke.EXTERN_LIBRARY, CallingConvention = Emgu.CV.CvInvoke.CvCallingConvention)] 

确保您更改了所有内容。

首先用这种方式测试:从emgu-cv installationon目录中打开一个示例项目并运行它。例如,打开hello-world示例并尝试运行它。如果示例项目运行时没有问题,则安装是正确的。

对于emgu-cv示例项目,项目构建设置中的Output Path选项的值设置为'.''''bin'。若要解决项目问题,请在visual studio中打开该项目,并将输出路径选项的值设置为'C:''Emgu''emguv2.9''bin'。尝试运行该项目。它必须取得成功。

现在,将"输出路径"选项的值设置回bin''Debug''。然后,使用add->Existing Item菜单将'C:''Emgu''emguv2.9''bin'文件夹中的所有DLL文件添加到您的项目中。类似地,使用add->Existing Item菜单将'C:''Emgu''emguv2.9''bin''x64'文件夹中的所有DLL文件添加到您的项目中。现在,转到属性窗口,将所有dll文件的"复制到输出目录"选项设置为"始终复制"。最后,在Configuration Manager窗口中,为x64平台创建一个新配置。

好运