OpenCV - DLL丢失了,但事实并非如此?

时间:2010-04-22 22:33:34

标签: c++ opencv

我正在尝试使用OpenCV的基本程序,代码如下:

#include "cv.h"
#include "highgui.h"

int main()
{
    IplImage* newImg;
    newImg = cvLoadImage("~/apple.bmp", 1);
    cvNamedWindow("Window", 1);
    cvShowImage("Window", newImg);
    cvWaitKey(0);
    cvDestroyWindow("Window");
    cvReleaseImage(&newImg);
    return 0;
}

当我运行时,我得到了

  

程序无法启动,因为   你的libcxcore200.dll丢失了   电脑。尝试重新安装   程序来解决这个问题。

但是,我可以看到这个DLL。它存在。我已将以下内容添加到链接器

的输入依赖项中
  

C:\ OpenCV2.0 \ lib中\ libcv200.dll.a   C:\ OpenCV2.0 \ LIB \ libcvaux200.dll.a   C:\ OpenCV2.0 \ LIB \ libcxcore200.dll.a   C:\ OpenCV2.0 \ lib中\ libhighgui200.dll.a

是什么给出的?我正在使用visual studio 2008。

当我链接.dll文件而不是.dll.a文件时,我得到了

  

致命错误LNK1107:无效或损坏   file:无法读取0x3F8   libcv200.dll

14 个答案:

答案 0 :(得分:23)

我按照http://opencv.willowgarage.com/wiki/VisualC%2B%2B_VS2010的说明操作,但仍然遇到了完全相同的问题,所以我的解决方法就是这样。

  1. 获取MSVC 2010快递版。

  2. 获取Win 32 OpenCV 2.2二进制文件并安装在默认位置。

  3. 创建新项目。

  4. 项目设置

    项目 - > OpenCV_Helloworld属性...配置属性 - > VC ++目录

    包含目录...添加:C:\OpenCV2.2\include\;

    图书馆目录...添加:C:\OpenCV2.2\lib;C:\OpenCV2.2\bin;

    来源目录......添加:

    C:\OpenCV2.2\modules\calib3d\src;C:\OpenCV2.2\modules\contrib\src;C:\OpenCV2.2\modules\core\src;C:\OpenCV2.2\modules\features2d\src;C:\OpenCV2.2\modules\flann\src;C:\OpenCV2.2\modules\gpu\src;C:\OpenCV2.2\modules\gpu\src;C:\OpenCV2.2\modules\highgui\src;C:\OpenCV2.2\modules\imgproc\src;C:\OpenCV2.2\modules\legacy\src;C:\OpenCV2.2\modules\ml\src;C:\OpenCV2.2\modules\objdetect\src;C:\OpenCV2.2\modules\video\src;
    

    链接器 - >输入 - >附加依赖...

    对于Debug Builds ...添加:

    opencv_calib3d220d.lib;opencv_contrib220d.lib;opencv_core220d.lib;opencv_features2d220d.lib;opencv_ffmpeg220d.lib;opencv_flann220d.lib;opencv_gpu220d.lib;opencv_highgui220d.lib;opencv_imgproc220d.lib;opencv_legacy220d.lib;opencv_ml220d.lib;opencv_objdetect220d.lib;opencv_video220d.lib;
    
  5. 此时我认为我已经完成了,但遇到了在调试模式下运行exe时遇到的问题。一旦你看到它,最后一步是显而易见的,选择:

    链接器 - >常规...将“使用库依赖项输入”设置为“是”

    希望这有帮助。

答案 1 :(得分:16)

只需将C:\OpenCV2.0\bin添加到 PATH 环境变量

安装OpenCV时,

选择Add OpenCV to the system PATH for current user选项,这不是默认选项

答案 2 :(得分:14)

仅为了您的信息,在添加“PATH”之后,对于我的win7,我需要重启它以使其正常工作。

答案 3 :(得分:6)

我在opencv上遇到了很多问题,并且在经历了令人毛骨悚然的4-6个月之后才取得了成功。这是我遇到的最后一个问题,但上述所有问题都无法解决。对我来说有用的只是复制并粘贴opencv_core2 * .dll(以及opencv_highgui2 * .dll,因为你将它包括在内也会要求它)到发行版(或调试文件夹中 - 我假设。还没有测试过)项目的文件夹,您的应用程序文件所在的位置。

希望这有帮助!

答案 4 :(得分:6)

在Visual Studio 2013中,您需要将其添加到Environment Variables,然后将Restart添加到您的电脑中。这是.dll文件所在的路径。

enter image description here

答案 5 :(得分:4)

您只需将所需dll文件(或文件)的文件夹添加到“Path”中的系统“Environment Variables”中。 您的问题将100%得到解决。我也有这个问题。

答案 6 :(得分:1)

只需打开bin文件夹,然后将.dll文件复制并粘贴到您正在使用的文件夹中即可解决问题

答案 7 :(得分:0)

关于@ Marc的回答,我认为VC不会使用OS的路径。您是否添加了VC库路径的路径。我通常会将DLL添加到项目中,如果在构建中更新则复制,这对我来说非常有用。

答案 8 :(得分:0)

你可以在opencv \ build \ x86 \ vc12 \ bin文件夹中找到opencv_core248和其他dll。只需将所需的dll复制到system32文件夹即可。你的应用程序应该开始工作!希望它有所帮助。

答案 9 :(得分:0)

这可能就像复活一匹死马。但是就在那儿,为什么将这些问题的答案简单地将dll放入system32文件夹中,是因为该文件夹位于os的系统路径中。

为操作系统提供路径链接实际上是最佳实践。

使用Windows 10

  1. 打开文件浏览器
  2. 右键单击“此电脑”,然后选择“属性”
  3. 现在在出现的“控制面板\系统和安全性\系统”窗口中,从左侧面板中单击“高级系统设置”。
  4. 在下一个窗口的底部,单击“环境变量”按钮。
  5. 在下一个窗口中,有两个面板,最上面的一个面板用于修改当前用户的变量,最下面的面板用于修改系统的变量。在底部面板上,找到变量“ Path”并单击以选择它,然后单击“ edit”按钮。
  6. 然后您可以在此处创建,编辑,删除或更新系统的不同路径。例如,要将mingw32-make添加到系统,以便您可以通过命令提示符访问该命令,请单击“新建”,然后粘贴到bin的路径中。示例路径“ D:\ Qt \ Tools \ mingw730_64 \ bin”,不带引号,也没有其他空格。
  7. 在所有窗口上单击“确定”,以保存更改,然后重新启动计算机以加载更改。

答案 10 :(得分:-1)

DLL文件末尾的“.a”是个问题,因为你没有使用CMAKE来构建OpenCV 2.0。此外,您不链接到DLL文件,链接到库文件,再次,您没有看到正确的库文件的原因是因为您没有使用CMAKE来构建OpenCV 2.0。如果要使用OpenCV 2.0,则必须构建它才能在Visual Studio中正常工作。如果您不想构建它,那么我建议降级到OpenCV 1.1pre,它是预先构建的,并且在Visual Studio中更加宽容。

另一个选项(我建议的那个)是放弃OpenCV并使用EmguCV。我一直在玩OpenCV大约一年,当我切换到EmguCV因为EmguCV与.NET一起工作时,事情变得容易得多,所以你可以使用像C#这样没有指针,头文件的所有C ++包袱的语言,和内存分配问题。

至于64位与32位的问题,OpenCV并没有正式支持64位。为了安全起见,打开项目属性并将“Build”选项卡下的“Platform Target”从“Any CPU”更改为“X86”。只要您使用像EmguCV这样的包装器,就可以在OpenCV执行任何操作时执行此操作。

答案 11 :(得分:-1)

从System32

中的/ bin复制所有.dll

答案 12 :(得分:-2)

只需将.dll文件复制到C:\ windows \ system32 \

即可

答案 13 :(得分:-6)

无需做任何事情。这是一个视觉工作室的错误。

走到这里: http://connect.microsoft.com/VisualStudio/Downloads/DownloadDetails.aspx?DownloadID=31354

并为您的计算机操作系统下载相应的修补程序

关闭visual studio,运行修复程序,然后重新启动VS

代码应该运行没有任何错误。