C++ 缺少OpenCV-DLL,但它';不是吗?

C++ 缺少OpenCV-DLL,但它';不是吗?,c++,opencv,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("W

我正在使用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

有什么好处?我正在使用VisualStudio2008

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

致命错误LNK1107:无效或损坏 文件:无法在0x3F8处读取 libcv200.dll


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

安装OpenCV时

选择选项,
将OpenCV添加到当前用户的系统路径
,这不是默认路径

DLL文件末尾的“.a”是一个问题,因为您没有使用CMAKE构建OpenCV 2.0。此外,您没有链接到DLL文件,而是链接到库文件,而且,您没有看到正确的库文件的原因是因为您没有使用CMAKE构建OpenCV 2.0。如果要使用OpenCV 2.0,必须构建它,使其在Visual Studio中正常工作。如果您不想构建它,那么我建议降级到OpenCV 1.1pre,它是预构建的,在VisualStudio中更容易理解

另一个选择是放弃OpenCV,选择EmguCV。我和OpenCV玩了大约一年,当我切换到EGGUV时,事情变得简单了很多,因为EngUCV与.NET一起工作,所以你可以使用一个像C语言这样的语言,它不包含指针、头文件和内存分配问题的所有C++包。
至于64位与32位的问题,OpenCV并不正式支持64位。为了安全起见,请打开项目属性,并将“构建”选项卡下的“平台目标”从“任意CPU”更改为“X86”。这应该在你使用OpenCV做任何事情的时候完成,即使你使用的是像EmguCV这样的包装器。

至于@Marc的答案,我认为VC不会使用来自操作系统的路径。你把路径添加到VC的库路径了吗。我通常会将dll添加到项目中,如果版本较新,则进行复制,这对我来说非常有效。

只需打开bin文件夹,将.dll文件复制并粘贴到您正在使用的文件夹中。添加“路径”后,应能解决此问题,仅供参考。

,对于我的win7,我需要重新启动它才能让它工作。

我按照上的说明操作,但仍然遇到了完全相同的问题,下面是我如何解决它的

  • 获取MSVC 2010快速版

  • 已获取Win 32 OpenCV 2.2二进制文件并安装在默认位置

  • 创建新项目

  • 项目设置

    项目->OpenCV\u 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;
    
    链接器->输入->其他依赖项

    对于调试版本。。。加:

    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;
    
  • 此时,我认为我已经完成了,但在调试模式下运行exe时遇到了您描述的问题。最后一步很明显,一旦看到它,请选择:

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


    希望这能有所帮助。

    不需要做任何事情。这是一个VisualStudio错误

    到这里来:

    并下载适用于计算机操作系统的相应修复程序

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


    代码应该运行无误。

    我在opencv上遇到过很多问题,只有在可怕的4-6个月后才成功。这是我遇到的最后一个问题,但上述所有问题都没有解决。对我来说,有效的方法是将opencv_core2*.dll(以及opencv_highgui2*.dll,因为您也包含了它)复制并粘贴到您项目的发布(或调试文件夹——我假设。尚未测试过)文件夹中,您的应用程序文件就在该文件夹中


    希望这有帮助

    从System32中的/bin复制所有.dll

    您只需将所需dll文件的文件夹添加到“路径”中的系统“环境变量”中即可。
    你的问题将100%得到解决。我也有这个问题。

    您可以在opencv\build\x86\vc12\bin文件夹中找到opencv\u core248和其他DLL。只需将所需的DLL复制到system32文件夹中。你的应用程序应该在一瞬间开始工作!希望有帮助。

    只需将.dll文件复制到Visual Studio 2013中的C:\windows\system32\

    ,您需要将其添加到
    环境变量中,然后
    重新启动电脑。这是.dll文件所在的路径


    这可能就像复活一匹死马。但就在这里,对于这类问题的答案是简单地将dll放入system32文件夹的原因是因为该文件夹位于操作系统的系统路径中

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

    使用windows 10

  • 打开文件管理器
  • 右键单击“此电脑”并选择“属性”
  • 现在,在弹出的“控制面板\系统和安全\系统”窗口中,单击左侧面板上的“高级系统设置”
  • 在下一个窗口的底部,单击“环境变量”按钮
  • 在下一个窗口中,有两个面板,顶部面板用于向当前用户修改变量,底部面板用于向系统修改变量。在底部面板上,找到变量“Path”并单击以选择它,然后单击