EmguCV 64位生成运行时错误

时间:2011-10-27 19:17:28

标签: c# opencv emgucv

我遇到了在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

我按照this article中提供的说明操作。实际上我使用了文章中的示例项目,并且它们在V2.2中构建得很好,但是当我用V2.3二进制文件(emgu和opencv)替换时,遇到错误。

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

3 个答案:

答案 0 :(得分:4)

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

有两种解决方案:

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

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

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

    干杯, 克里斯

答案 1 :(得分:1)

无需将它们添加到项目中; 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)] 

确保您更改所有内容。

答案 2 :(得分:1)

首先以这种方式测试:从emgu cv installaiton目录打开一个示例项目并运行它。例如,打开hello world示例并尝试运行它。如果样本项目没有问题,那么安装是正确的。

对于emgu cv示例项目,项目构建设置中输出路径选项的值设置为'.. \ .. \ 仓即可。要修复项目问题,请在visual studio中打开项目,并将输出路径选项的值设置为'C:\ Emgu \ emgucv 2.9 \ bin'。尝试运行该项目。它必须成功运行。

现在,将Output Path选项的值设置为 bin \ Debug \ 。然后,使用ADD将'C:\ Emgu \ emgucv 2.9 \ bin'文件夹中的所有DLL文件添加到项目中 - >现有项目菜单。同样,使用ADD将'C:\ Emgu \ emgucv 2.9 \ bin \ x64'文件夹中的所有DLL文件添加到项目中 - >现有项目菜单。现在,转到属性窗口并将所有dll文件的复制到输出目录选项设置为始终复制。最后,在Configuration Manager窗口中,为 x64 平台创建新配置。

祝你好运