首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >OpenCV3.0 visual社区2017编译链接错误

OpenCV3.0 visual社区2017编译链接错误
EN

Stack Overflow用户
提问于 2017-07-27 20:30:05
回答 1查看 964关注 0票数 0

我在我的windows10 64位中安装了OpenCV3.0。我在visual studio社区2017中创建了一个C++项目,并完成了opencv文档中提供的所有这些步骤( 此链接中的本地方法,即: 1-创建环境变量:

代码语言:javascript
复制
OPENCV_DIR C:\Program Files\opencv\build\x86\vc11

添加了用户和系统路径,如下所示

代码语言:javascript
复制
%OPENCV_DIR%\bin

2-在我的项目中,我添加了Properties -> C/C++ ->

代码语言:javascript
复制
C:\Program Files\opencv\build\include

3- Properties -> Link -> General

代码语言:javascript
复制
$(OPENCV_DIR)\lib
$(OPENCV_DIR)\staticlib

我包含了staticlib,因为最初编译器没有找到opencv_core300d.lib,而这个编译器存在于staticlib中,所以我添加了它。

选中YES for 使用库依赖项

4- Properties -> Link -> Entry

代码语言:javascript
复制
opencv_core300d.lib
opencv_highgui300d.lib
opencv_imgproc300d.lib
opencv_ml300d.lib
opencv_ts300d.lib

具有遗传价值:

代码语言:javascript
复制
kernel32.lib
user32.lib
gdi32.lib
winspool.lib
comdlg32.lib
advapi32.lib

我得到了更多800个错误,这些错误都与.obj文件中与opencv_core300d.lib相关的值之间的不匹配有关:

代码语言:javascript
复制
    1>Source.cpp
1>opencv_core300d.lib(alloc.obj) : error LNK2038: discordance détectée pour '_MSC_VER' : la valeur '1700' ne correspond pas à la valeur '1900' in Source.obj
1>opencv_core300d.lib(alloc.obj) : error LNK2038: discordance détectée pour 'RuntimeLibrary' : la valeur 'MTd_StaticDebug' ne correspond pas à la valeur 'MDd_DynamicDebug' in Source.obj
1>opencv_core300d.lib(stl.obj) : error LNK2038: discordance détectée pour '_MSC_VER' : la valeur '1700' ne correspond pas à la valeur '1900' in Source.obj
1>opencv_core300d.lib(stl.obj) : error LNK2038: discordance détectée pour 'RuntimeLibrary' : la valeur 'MTd_StaticDebug' ne correspond pas à la valeur 'MDd_DynamicDebug' in Source.obj
1>opencv_core300d.lib(matrix.obj) : error LNK2038: discordance détectée pour '_MSC_VER' : la valeur '1700' ne correspond pas à la valeur '1900' in Source.obj
1>opencv_core300d.lib(matrix.obj) : error LNK2038: discordance détectée pour 'RuntimeLibrary' : la valeur 'MTd_StaticDebug' ne correspond pas à la valeur 'MDd_DynamicDebug' in Source.obj
1>opencv_core300d.lib(opencv_core_pch.obj) : error LNK2038: discordance détectée pour '_MSC_VER' : la valeur '1700' ne correspond pas à la valeur '1900' in Source.obj
1>opencv_core300d.lib(opencv_core_pch.obj) : error LNK2038: discordance détectée pour 'RuntimeLibrary' : la valeur 'MTd_StaticDebug' ne correspond pas à la valeur 'MDd_DynamicDebug' in Source.obj
1>opencv_core300d.lib(system.obj) : error LNK2038: discordance détectée pour '_MSC_VER' : la valeur '1700' ne correspond pas à la valeur '1900' in Source.obj

我试图通过检查类似错误的相似答案来解决这个问题,根据这个答案的说法,这是由于编译器的不同版本造成的。如果是的话,如何纠正呢?

用于测试opencv工作的示例代码:

代码语言:javascript
复制
    #include <opencv2/core.hpp>
#include <opencv2/imgcodecs.hpp>
#include <opencv2/highgui.hpp>
#include <iostream>

using namespace cv;
using namespace std;

int main(int argc, char** argv)
{
    if (argc != 2)
    {
        cout << " Usage: display_image ImageToLoadAndDisplay" << endl;
        return -1;
    }

    Mat image;
    image = imread(argv[1], IMREAD_COLOR); // Read the file

    if (image.empty()) // Check for invalid input
    {
        cout << "Could not open or find the image" << std::endl;
        return -1;
    }

    namedWindow("Display window", WINDOW_AUTOSIZE); // Create a window for display.
    imshow("Display window", image); // Show our image inside it.

    waitKey(0); // Wait for a keystroke in the window
    return 0;
}

我需要帮助!谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-07-28 10:49:41

这些错误是由于opencv库的不同构建版本造成的。如果可用,可以下载编译器版本的预生成二进制文件,或者需要使用cmake从源代码生成OpenCV。在您的示例中,您需要为vs2017构建二进制文件,即_MSC_VER 1900。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45360465

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档