OpenCV3.42+VS2017配置+模塊計算機類型“X86”與目標計算機類型“x64”沖突”的問題解決


 

目錄

OpenCV3.42+VS2017配置

Visual Studio 2017 第三方依賴設置,附加依賴項和附加庫目錄

 “fatal error LNK1112: 模塊計算機類型“X86”與目標計算機類型“x64”沖突”的問題解決


 

OpenCV3.42+VS2017配置

https://opencv.org/releases.html

下載  opencv-3.4.2-vc14_vc15.exe 解壓縮。

1.安裝:

    雙擊打開下載好的opencv-3.1.0.exe文件,進行安裝(其實是解壓)

   安裝完畢之后,在其安裝目錄下可以看到兩個文件夾:build和sources,其中build是OpenCV使用時要用到的一些庫文件,而sources中則是OpenCV為我們提供的一些demo示范源碼:

    

 

2.環境變量配置:

    上面步驟只是完成了安裝,但是要能夠正常使用OpenCV來進行開發,我們還需要進行環境變量的配置,我的電腦—>屬性—>高級系統設置—>環境變量,找到Path變量,選中並點擊編輯:

    

    64位系統的需要在path添加“;opencv安裝路徑\build\x64\vc14\bin”(注:英文輸入法中的“;”是分割符,用於與前面其他軟件的配置參數分開),例如我的配置參數應該為:;E:\OpenCV\opencv\build\x64\vc14\bin。在之前的opencv版本中的配置時,32位系統應配置路徑“;opencv安裝路徑\build\x86\vc14\bin”,但是3.1.0版本的OpenCV已經將x86這個目錄刪除了,也就是說在VS 2015環境下不能進行32位的OpenCV編譯。

    還有一個要注意的就是x64文件夾下分為vc12和vc14兩個文件夾,他們對應於VS的版本,例如VS2013應使用vc2012,而這里我們使用的是VS 2015,所以應該使用vc14文件目錄:

    

補充:vc8 = Visual Studio 2005,vc9 = Visual Studio 2008,vc10 = Visual Studio 2010,vc11 = Visual Studio 2012,vc12 = Visual Studio 2013,vc14 = Visual Studio 2015

        注意:環境變量配置完畢之后,需要重啟電腦才能生效!

 

3.VS 2015配置:

    我們知道要在VS中使用外部的類庫的話,需要進行引入的一下配置,這個配置就包括:外部庫目錄指定和外部包含文件指定。

    打開VS 2015,新建一個空白的win32的控制台工程:

        

        選擇語言為C++,Win32類型中的控制台工程,並設置工程名稱:

 

        指定建立的工程為空白工程:

        

        建立完工程之后,我們選中解決方案欄中的Resource Files目錄(即源碼目錄),然后新建一個C++源碼文件:

        

        設置源碼的文件名,例如:Main,然后創建此源碼文件到工程中: 

        在VS中有個叫做“屬性管理器”的工具,用於進行VS整體參數的配置,配置一次之后,以后所有新建項目都能應用改配置,不用再一一進行配置操作,使用起來也非常方便。點擊工具欄中的:View—>Other Windows—>Property Manger打開屬性管理器:

        

        在新出現的屬性管理器欄中,展開目錄,選中Debug|Win64中的Microsoft.Cpp.x64.user,並右鍵點擊屬性(Properties)進入屬性界面:

        

1)配置包含目錄:

        在通用屬性(Common Properties)—>VC ++目錄—>包含目錄,然后點擊右側三角標志選中Edit進入編輯:

 

        向其中添加下面三個路徑:

        E:\OpenCV\opencv\build\include

        E:\OpenCV\opencv\build\include\opencv

        E:\OpenCV\opencv\build\include\opencv2

        

2)配置庫文件目錄:

        完成上面的包含目錄配置之后,我們還需要進行庫文件的配置:回到屬性界面,選擇包含目錄下面的Library Directories(庫文件目錄):

  

        向庫文件目錄下添加OpenCV的庫文件目錄:E:\OpenCV\opencv\build\x64\vc14\lib,這個目錄根據每個人自己在第一步安裝OpenCV中選擇的目錄進行選定:

        

3)配置動態鏈接庫:

        我們可以查看步驟2)中添加的庫文件目錄下面.lib文件列表,發現在3.1.0版本的OpenCV中,僅剩下兩個庫文件,分別是:opencv_world310.lib和opencv_world310d.lib,這里兩個庫文件的區別就是:opencv_world310.lib是Release模式版本,而opencv_world310d.lib是Debug模式版本:

        

        跟上述兩個步驟相似,在屬性界面中打開Linker(鏈接庫)—>Input(輸入)—>Additional Dependencies(添加依賴):

  

        將我們剛剛在OpenCV庫文件目錄下看到的兩個庫文件其中一個添加到這里(根據模式需求Release模式或Debug模式):

        

        其實,對已經發行和未來即將發布的新版OpenCV,只需看opencv\build\x86\vc10\lib下的庫是哪幾個,添加成依賴項就可以了。

 

三、實踐:

    在完成了上述所有配置工作之后,我們需要進行一次實測,用於驗證以上配置是否成功。這里我們的測試demo功能很簡單,就是在一個窗口中顯示我們指定的一張圖片。在之前的Main.cpp文件中添加以下代碼:

復制代碼

#include <iostream>  
#include <opencv2/core/core.hpp>  
#include <opencv2/highgui/highgui.hpp>  
  
using namespace cv;  
  
int main(){  
    // 讀入一張圖片(游戲原畫)    
    Mat img = imread("pic.jpg");  
    // 創建一個名為 "游戲原畫"窗口    
    namedWindow("游戲原畫");  
    // 在窗口中顯示游戲原畫    
    imshow("游戲原畫", img);  
    // 等待6000 ms后窗口自動關閉    
    waitKey(6000);  
}  

復制代碼

    將圖片pic.jpg復制到工程目錄下面,與源碼位於同一目錄:

    
    運行工程,假如一切都正常的話,會出現如下結果:

    

 

 

Visual Studio 2017 第三方依賴設置,附加依賴項和附加庫目錄

Visual Studio 2017 第三方依賴。需要做的事情有:1、指定頭文件所在目錄。2、指定需要使用到的lib。3、指定lib文件夾,也就是代碼的實現部分所在的目錄。

附加依賴項 是指輸入項,如某個.LIB文件。 
附加庫目錄 是你用 #pragma comment(lib,”a.lib”)的時候;此時就搜索相應的庫目錄,直到找到a.lib文件。

附加依賴項和附加庫目錄最直觀的區別是:前者添加的是文件名比如a.lib,而后者是路徑。

添加到附加依賴項 :LIB文件被真正包含進來了。 
把它所在的目錄添加到附加庫目錄里面 :僅僅包含目錄只是告訴IDE,搜索沒有指定路徑的庫文件時,也搜索這里。

所以,這里存在一個先后的順序:先查找所指定的lib附加依賴項,如果沒有找到,就從附加庫目錄中搜索。從目錄中搜索所花費的時間是比較長的。

下面是具體的設置方法:

1、添加工程的頭文件目錄:
工程---屬性---配置屬性---c/c++---常規---附加包含目錄:加上頭文件存放目錄。
對應相應的頭文件夾(include文件夾),里面存放的是.h頭文件; 
項目名右鍵 -- properties -- c/c++ -- General -- Additional Include Directories

2、添加文件引用的lib靜態庫路徑:
工程---屬性---配置屬性---鏈接器---常規---附加庫目錄:加上lib文件存放目錄。
對應本例中的lib文件夾。里面存放的是.lib文件;
項目名右鍵 -- properties -- Linker -- General -- Link Library Dependencies

3、然后添加工程引用的lib文件名:
工程---屬性---配置屬性---鏈接器---輸入---附加依賴項:加上lib文件名。 
項目名右鍵 -- properties -- Linker -- Input -- Additional Dependencies.

 

 “fatal error LNK1112: 模塊計算機類型“X86”與目標計算機類型“x64”沖突”的問題解決

 

第四步:打開VS2012新建一個工程,然后找到屬性管理器,點擊Debug欄目,右鍵添加新項目屬性表,並且進行相關命名,因為以后會反復用到這個東西,所以名字要特別一點。

 

 

Release模式和Debug模式差不多,只不過在添加附加依賴項的時候,將附件依賴項的文件名后面的“d”給去掉。

 

現在我們再討論一下fatal error LNK1112: 模塊計算機類型“X86”與目標計算機類型“x64”沖突問題的解決:即我們需要再64位環境下編譯運行,但是出現這個問題。

首先要確保這兩個地方沒有問題:

1:項目解決方案——屬性——連接器——高級——目標計算機,看目標計算機是否是MachineX64,不是的話更改為。

2:配置管理器——新建(有的話直接選擇)x64

這兩個搞定之后,試一試能不能跑,不能跑的話,我們回到剛剛設置建立的OpenCV屬性表當中,注意是修改DebugX64位下面的屬性表,將我們的庫目錄的路徑更改一下,

將原來的 C:\opencv\build\x86\vc11\lib 改為 C:\opencv\build\x64\vc11\lib,這樣基本就沒問題。Relaese方面一樣。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM