opencv - 带有 OpenCV 2.4.10 版 DLL 的 Visual Studio 2012 缺少错误

标签 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 专业版 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
  • Configuration Properties > Linker > General 下,我添加了 D:\Development\openCV\build\x64\vc11\lib
  • Configuration Properties > Linker > Input 下,我添加了 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 需要您用于项目的任何 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,使用静态库是你可以进行项目的另一种方式

关于opencv - 带有 OpenCV 2.4.10 版 DLL 的 Visual Studio 2012 缺少错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26964264/

相关文章:

visual-studio-2012 - 升级到 VS 2012 Update 2 后无法通过 Resharper 运行 MSTest 单元测试

c++ - "/MD/MT "和 "dll lib"之间的概念歧义

python - 如何从 realsense L515 记录深度流

缺少 PHP 扩展 VC 编译器信息

python - imread 返回 None,违反函数 'cvtColor' 错误中的断言 !_src.empty()

c++ - header 未刷新 - Visual C++ 2012

c# - 如何在库上设置运行时绑定(bind)重定向

c++ - 下一个标准可以改变内部STL容器结构吗

python - 为什么 openCV2 的 Line (antialiased) 函数在 CV_16UC1 和 CV_8UC1 上给出不同的结果而没有溢出

android - 使用FFMPEG android用视频中的图像替换人脸