'Emgu.CV.CvInvoke'的类型初始值设定项引发了异常

时间:2009-02-02 14:46:16

标签: c# emgucv

如果有人在.net 3.5框架中使用Emgu openCv包装器,请告诉我为什么会出现此异常,其内部异常无法加载cxcore.dll。

15 个答案:

答案 0 :(得分:11)

对于Emgu CV版本< = 2.1,这意味着以下dll:cvXXX.dll,cvauxXXX.dll,cxcoreXXX.dll,highguiXXX.dll,opencv_ffmpegXXX.dll,mlXXX.dll和cvextern.dll,其中XXX是OpenCV版本号。

对于Emgu CV版本> = 2.2,这意味着以下dll:opencv_calib3dXXX.dll,opencv_contribXXX.dll,opencv_coreXXX.dll,opencv_features2dXXX.dll,opencv_highguiXXX.dll,opencv_imgprocXXX.dll,opencv_legacyXXX.dll,opencv_mlXXX.dll,opencv_objectdetectXXX .dll,opencv_videoXXX.dll,其中XXX是OpenCV版本号。

复制这些文件并将其粘贴到C:\ WINDOWS \ system32

它适用于我

答案 1 :(得分:7)

以下是我如何解决问题: 将x86(或64位操作系统上的x64)文件夹地址复制到安装了Emgu的“bin”文件夹下。我的是:C:\ Emgu \ emgucv-windows-universal-gpu 2.4.9.1847 \ bin \ x86

然后在此处粘贴此地址: 控制面板>系统>高级系统设置>环境变量>在系统变量中单击“路径”,然后单击编辑>在那里的字符串末尾添加一个分号,并在分号>之后粘贴你刚刚复制到剪贴板的地址。点击确定。

答案 2 :(得分:4)

这个错误发生在我身上。我添加了 cxcore210.dll (对于emgucv 2.1版本),它最初位于bin文件夹中。

然后这引起了一个新的错误,说我还必须包含 highgui210.dll (也适用于emgucv 2.1版本)......

然后问题解决了:)

我希望它也适合你......

答案 3 :(得分:3)

您没有安装正确版本的openCV,或者您根本没有安装openCV dll。最新版本的Emgu使用cxcore110.dll,以前的版本使用cxcore100.dll。它们必须位于运行应用程序的目录中,或者位于路径中(可能是%system32%)。当我试图让Emgu运行时,我遇到了这个问题。

答案 4 :(得分:3)

在尝试了所有可能的opencv_xxx组合后,它对我有用的包括库npp32_42_9.dll。希望它有所帮助。

答案 5 :(得分:2)

我建议您turn on Fusion logging并查看尝试从哪里加载cxcore.dll,并检查您是否在正确的位置获取了该文件。

答案 6 :(得分:2)

我遇到了同样的问题。我设置了Fusion日志记录,对我来说没用。我在与cxcore110.dll相同的目录中运行程序集,所以我很难过。

接下来,我在路径中的目录中加载/复制了所有OpenCV DLL,同样的问题。

使用依赖性walker后找到解决方案。它正在开发任何具有VS2005和VS200的系统。 VS2008。如果您只有VS2008,那么您将需要Microsoft Visual C ++ 2005 SP1可再发行组件包(x86)s] 1

答案 7 :(得分:2)

如果您已经进行了dll设置并仍然获得异常,请尝试以下操作: 转到项目属性 - >申请 - >目标框架,并将其更改为NET。框架4并点击“是”'。再次运行您的应用程序,它应该工作得很好。

答案 8 :(得分:1)

我花了一段时间才弄清楚为什么会出现这种情况,因为上述解决方案都没有解决问题。事实证明我安装了Windows 10 Pro N,缺少媒体功能。安装Media Feature Pack之后就可以了。

答案 9 :(得分:0)

我有错误的时间和次数。我使用的是EmguCV 2.4.9和.Net framework 4.5。 我查了很多教程,但没有找到答案。最后,当我将opencv文件从版本220和249都放入时,它工作正常!

答案 10 :(得分:0)

将EMGU安装的bin文件夹中的所有非托管dll复制并粘贴到exe文件所在的位置(项目文件夹的Release或Debug文件夹)。
在我的例子中,非托管dll位于“C:\ Emgu \ emgucv-windows-universal-cuda 2.9.0.1922 \ bin \ x86”

答案 11 :(得分:0)

我最近安装了EmguCV 2.9。 64位应用程序工作正常。当我尝试使用32位平台(x86)时出现此异常。

我意识到在按照设置Emgu的教程时,我设置了" Path"在系统环境变量中。\ x64文件夹。对于我的情况,它是C:\ Emgu \ emgucv-windows-universal-cuda 2.9.0.1922 \ bin \

为了使32位应用程序正常工作,我改变了" Path"变量到。\ x86文件夹,重新启动计算机。退回是64位解决方案将不再有效。

理想的解决方案是将。\ x86或。\ x64中的所有DLL文件复制到可执行文件所在的位置。对于我的情况,因为我使用的是LabVIEW + .NET DLL,LabVIEW会将DLL的副本复制到其缓存文件夹中,因此易于开发的临时解决方案是更改" Path"变量。当我分发最终的二进制可执行文件时,我将复制匹配的DLL文件。

答案 12 :(得分:0)

就我而言,在bin \ release下添加这些文件解决了这个问题: npp32_42_9.dll cudart32_42_9.dll

我花了大约2个小时来结束这个:)

答案 13 :(得分:0)

我之前已经安装了OpenCv2.3.1,昨天我安装了最后一个版本的EmguCV3.0(也尝试了2.9),但它给出了这个错误。

我尝试的所有解决方案都没有安装EmguCV 2.3而且解决了。我认为EmguCV和opencv的版本对解决方案很重要。

答案 14 :(得分:0)

尝试了很多东西后,如果您的.dll文件都已正确放置并且只有版本问题退出,请尝试按照以下简单步骤操作:

  1. 打开已创建项目的属性
  2. 转到构建部分
  3. 将平台目标更改为“任何CPU”
  4. 保存并重建项目。