我在windows10 64位中安装了opencv 3.0。我在Visual Studio社区2017中创建了一个C ++项目,并在opencv文档中提供了所有这些步骤(this link中的本地方法是: 1-创建环境变量:
OPENCV_DIR C:\Program Files\opencv\build\x86\vc11
我添加了用户和系统路径,如下所示
%OPENCV_DIR%\bin
2-在我的项目中,我添加了属性 - > C / C ++ - > 其他包括存储库:
C:\Program Files\opencv\build\include
3- 属性 - > 链接 - >的常规:
$(OPENCV_DIR)\lib
$(OPENCV_DIR)\staticlib
我包含了staticlib,因为一开始编译器没有找到opencv_core300d.lib,而这个在staticlib中存在,所以我添加了它。
检查是 使用库依赖项
4- 属性 - > 链接 - >的条目:
opencv_core300d.lib
opencv_highgui300d.lib
opencv_imgproc300d.lib
opencv_ml300d.lib
opencv_ts300d.lib
带有Herited值:
kernel32.lib
user32.lib
gdi32.lib
winspool.lib
comdlg32.lib
advapi32.lib
我收到了800多个错误,这些错误都与opencv_core300d.lib相关的.obj文件中的值不匹配有关:
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
我尝试通过检查类似错误的类似答案并根据this answer由于编译器的不同版本来解决问题。如果是这样,如何纠正它?
用于测试opencv的示例代码:
#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;
}
我需要帮助! 谢谢。
答案 0 :(得分:0)
这些错误是由于opencv库的不同构建版本造成的。您可以下载编译器版本的预构建二进制文件(如果可用),或者您需要使用cmake从源构建OpenCV。在您的情况下,您需要为vs2017构建二进制文件,即_MSC_VER 1900。