2017-07-27 44 views
0

我在windows10 64位安裝了opencv 3.0。我創建了Visual Studio中的社區2017年的C++項目,並沒有在this link OpenCV的文件(本地方法中提供所有這些步驟分別是: 1-創建環境變量:opencv 3.0 visual studio社區2017彙編LINK錯誤

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,所以我添加了它。

檢查YES使用庫的依賴項

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 

我得到了所有相關的中opencv_core300d.lib相關.obj文件值之間的不匹配更多800個錯誤:

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

是否使用Visual Studio 2017或至少2015年構建opencv?這是用於調試配置。 'opencv_core300d.lib'不適用於發佈版本。 – drescherjm

+0

爲什麼3.0自從去年12月以來有3.2版本可用?你建立了自己的副本嗎? 2015年的軟件包不太可能是用幾個月前的編譯器構建的。 –

+2

您正在嘗試鏈接[編譯器]的不同版本的庫(至少這是'_MSC_VER'的錯誤)[wikipedia](https://en.wikipedia.org/wiki/Microsoft_Visual_C%2B% 2B#Internal_version_numbering)你可以看到使用的版本...在你的情況下,一個是用Visual Studio 2013編譯器編譯的,另一個是用2015編譯的。另一個錯誤是你用一個不同的標誌編譯它(靜態調試vs動態調試)查看[this](https://stackoverflow.com/questions/16830842/using-static-libraries-instead-of-dynamic-libraries-in-opencv)解決方案 – api55

回答

0

這些錯誤是由於不同版本的opencv庫。如果可以的話,你可以下載編譯器版本的預編譯二進制代碼,否則你需要使用cmake從源代碼編譯OpenCV。在你的情況下,你需要爲vs2017構建的二進制文件,即_MSC_VER 1900.

+0

我想回到Visual Studio社區2015以避免任何未來的問題(我想2017年可能太新了,所以可能會出現一些問題),但沒有找到任何鏈接下載它。 – SarahData

+1

***我想回到Visual Studio社區2015年,以避免任何未來的問題***這也不能解決問題。 VS 2015和VS 2017是彼此二進制兼容的,但與任何其他版本的Visual Studio不兼容。 – drescherjm

相關問題