Visual Studio 2012与OpenCV ver 2.4.10 DLL缺失错误

时间:2014-11-17 01:40:25

标签: opencv visual-studio-2012 dll path linker

我发现了几个与此相关的问题并尝试过。但是,我仍然无法解决问题。以下是我使用的网站以及我已做过的解释。

Visual Studieo 2010 with OpenCV 2.3.0

OpenCV Tutorial C++

Another Visual Studio 2010 example

我正在使用的是:

  • Windows 7 Professional x64
  • 适用于Windows桌面的Visual Studio 2012
  • OpenCV v2.4.10解压缩到D:\ Development \ OpenCV

第1步: 我进入了计算机>属性>高级系统设置>环境变量并添加: {strong>路径变量末尾的D:\Development\openCV\build\x64\vc11\bin\。然后我重新启动了电脑。

第2步: 创建了一个新项目并编辑了所有配置的属性。

  • 配置属性>下; C / C ++>一般,我添加了D:\Development\openCV\build\include
  • 配置属性>下;链接器>一般,我添加了D:\Development\openCV\build\x64\vc11\lib
  • 配置属性>下;链接器>输入,我添加了opencv_calib3d2410d.lib opencv_contrib2410d.lib opencv_core2410d.lib opencv_features2d2410d.lib opencv_flann2410d.lib opencv_gpu2410d.lib opencv_highgui2410d.lib opencv_imgproc2410d.lib opencv_legacy2410d.lib opencv_ml2410d.lib opencv_nonfree2410d.lib opencv_objdetect2410d.lib opencv_photo2410d.lib opencv_stitching2410d.lib opencv_superres2410d.lib opencv_ts2410d.lib opencv_video2410d.lib opencv_videostab2410d.lib
  • 配置属性>下;链接器>高级,我将目标计算机更改为 MachineX64

第3步: Build>配置管理器,项目更改为x64平台。

步骤4:我从上面的一个链接中复制并粘贴了代码,并修改并构建了图像的路径。

#include "stdafx.h"

#include <opencv2/highgui/highgui.hpp>
#include <iostream>

using namespace cv;
using namespace std;

int main()
{
    Mat im = imread("D:/lena.png");
    if (im.empty()) 
    {
    cout << "Cannot load image!" << endl;
    return -1;
    }
    imshow("Image", im);
    waitKey(0);
}

步骤5:我按下F7并成功构建了解决方案。 (可悲的是,花了一些时间来达到这一点)

问题是当我按F5时,我会收到错误说&#34;程序无法启动,因为您的计算机缺少opencv_core2410d.dll。尝试重新安装程序以解决此问题。&#34;

我认为将其添加到路径的第一步是解决方案。 通过将DLL移动到 D:\ Development \ VisualStudio \ opencvHelloWorld \ x64 \ Debug 文件夹,我可以运行可执行文件。任何人都可以解释如何解决这个问题?我错过了什么?

谢谢!

3 个答案:

答案 0 :(得分:4)

OpenCV需要您用于项目的任何dll与可执行文件位于同一目录中。您可以将所需的dll(在本例中为opencv_core2410d.dll)复制到您的调试文件夹中,将opencvcore2410.dll复制到您的发布文件夹中,或者将visual studio设置为将可执行文件移动到bin文件夹中。此选项位于Project-&gt; Properties下,在General页面上,您可以更改输出目录。

另一种选择是使用静态库而不是opencv的动态库。这会将您正在使用的任何opencv函数添加到可执行文件中,而不是使用单独的dll。这将使您的可执行文件更大,但将消除任何DLL问题。在opencv目录中的build / x64或x86 / vc11下,使用staticlib文件夹中的库将项目构建为静态项目。您需要在解决方案中添加更多资源,以便首先进行编译。 This answer应该通过切换到静态构建来帮助解决您遇到的任何链接器问题。

如果您计划部署可执行文件并且不想用它打包dll,那么使用静态库是您可以开展项目的另一种方式

答案 1 :(得分:3)

只需重新启动Visual Studio AFTER 即可将bin添加到PATH。

答案 2 :(得分:0)

请在配置属性&gt;下添加以下内容: C / C ++&gt;一般来说,

1。 D:\ Development \ openCV \ build \ include

2。 D:\ Development \ openCV \ build \ opencv

3. D:\ Development \ openCV \ build \ opencv2

这将解决您的问题。