【问题标题】:Visual Studio 2012 with OpenCV ver 2.4.10 DLL missing error带有 OpenCV 版本 2.4.10 DLL 的 Visual Studio 2012 缺少错误
【发布时间】:2014-11-17 01:40:25
【问题描述】:

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

Visual Studieo 2010 with OpenCV 2.3.0

OpenCV Tutorial C++

Another Visual Studio 2010 example

我使用的是:

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

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

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

  • Configuration Properties > C/C++ > General 下,我添加了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
  • Configuration Properties > Linker > Advanced 下,我将 Target Machine 更改为 MachineX64

第 3 步:对于 Build > Configuration Manager,将项目更改为 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 时,我会收到一条错误消息“程序无法启动,因为您的计算机中缺少 opencv_core2410d.dll。请尝试重新安装程序以解决此问题。”

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

谢谢!

【问题讨论】:

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


    【解决方案1】:

    OpenCV 需要您用于项目的任何 dll 与可执行文件位于同一目录中。您可以复制您需要的 dll,在这种情况下将 opencv_core2410d.dll 复制到您的调试文件夹中,并将 opencvcore2410.dll 复制到您的发布文件夹中,或者将 Visual Studio 设置为将您的可执行文件移动到 bin 文件夹中。该选项在 Project->Properties 下,在 General 页面可以更改输出目录。

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

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

    【讨论】:

    • 您能解释一下在环境变量中将\bin 添加到路径变量中的意义吗?谢谢。
    【解决方案2】:

    只需重新启动 Visual Studio之后将 bin 添加到 PATH。

    【讨论】:

      【解决方案3】:

      请在配置属性 > C/C++ > 常规下添加以下内容,

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

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

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

      这将解决您的问题。

      【讨论】:

        猜你喜欢
        • 2017-10-09
        • 1970-01-01
        • 1970-01-01
        • 2017-04-04
        • 1970-01-01
        • 2012-09-27
        • 2012-08-19
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多