操屁眼的视频在线免费看,日本在线综合一区二区,久久在线观看免费视频,欧美日韩精品久久综

新聞資訊

    文原本為博客園發布的一篇整理vscode編寫c/c++全部使用心得的文章

    喜歡的話可以收藏轉發加關注

    我將詳細介紹如何在windows上實現編譯/運行/調試C以及C++,如果你是一位初學者,請完全按照文章的推薦步驟進行,如果覺得圖片不夠清晰,請點擊一下圖片會顯示清晰的大圖

    一、前期準備

    1. 首先在微軟官網下載并安裝好visual stdio code,建議在安裝時勾選上添加到資源管理器上下文菜單

    勾選后在文件的右鍵菜單中會多出 Open with Code這個選項,也就是用vscode打開當前文件,vscode除了支持各種文本文件以外,還可以查看圖片和預覽Markdown

    2. 因為vscode只是一個代碼編輯器,沒有自帶有C/C++的編譯器,因此我們需要安裝一個C/C++編譯器并且設置環境變量,推薦mingw系列(指的是mingw或者mingw-w64,相比于mingw,mingw-w64更加強大),因為mingw也是后面提到的Code Runner插件默認的編譯器,調試也是用的mingw。因為網絡問題mingw-w64很難下載,推薦離線下載然后手動添加環境變量

    離線下載的地址為:

    MinGW-w64 - for 32 and 64 bit Windows?

    sourceforge.net

    為節省篇幅,具體的細節請參照:

    windows下安裝mingw-w64 - tyuiop - 博客園?

    www.cnblogs.com

    此時我們要驗證一下mingw是否可用,打開cmd輸入gcc -v,出現版本信息就表明mingw是可用的,如果未出現版本信息則需要再檢查一下,如果這里出現問題,后面全部無法進行

    3. 安裝必要的插件,打開vscode,點擊左面豎排第五個按鈕,搜索并安裝上如下三個插件

    • chinese(simplified)C/C++Code Runner

    安裝好以后重啟一下vscode,界面切換到了簡體中文,為避免出現其他問題,先暫時不要安裝其他插件界面給你推薦的插件


    二、編譯運行程序

    編譯運行程序將介紹兩種方法

    1. 使用之前安裝好的Code Runner插件一鍵編譯運行程序打開vscode的集成終端使用命令行編譯和運行

    點擊:文件>新建文件,出現一個空白文檔,我準備了一段測試用的代碼,請復制粘貼到空白文檔中

    #include <stdio.h>
    int main(){
     char name[100];
     printf("What is your name?\n");
     scanf("%s",name);
     printf("Hello,%s,nice to meet you!\n",name);
    }
    

    然后按Ctrl+S并將文件后綴名改為.c或.cpp后保存到電腦上,然后點擊右上角的三角形按鈕(原本這個位置沒有,是安裝Code Runner插件后新增的一鍵編譯運行程序的按鈕),或者按Ctrl+Alt+N就能編譯運行當前程序

    但現在會出現下面的情況

    程序段中使用了scanf函數從鍵盤讀取一串字符,但此時無法輸入數據,也無法結束程序,先關閉vscode再重新打開一下,也就是重啟一下vscode

    然后依次打開:文件>首選項>設置>用戶>拓展>Run Code Configuration

    找到Run In Terminal打上勾

    現在程序已經可以正常運行了,此時程序是運行在vscode的集成終端上,并不會額外彈出一個控制臺黑窗口

    這就是使用Code Runner插件運行程序的方法,點擊右上角的垃圾桶圖標可以直接結束程序運行

    vscode目前的集成終端存在這樣一個問題,如果當前輸入法是中文狀態,直接輸入數字時會卡住好長一會,解決方法是輸入前先切換的英文輸入狀態,最好是在輸入法設置中將首選項設置為英文

    Code Runner執行的指令可以修改,可以將默認使用的gcc/g++換成clang等,確實有需要的請看:修改Code Runner指令


    下面將描述通過命令行指令編譯運行程序的過程,剛接觸的初學者在有些地方不明白也沒關系,但希望你也能認真的看一遍


    上面介紹的是一種偷懶的方法,它存在局限,看一個例子

    假設說我們在代碼中使用了 winsock2.h這個頭文件,我們用剛剛的Code Runner插件的方式編譯會無法通過

    #include <winsock2.h>
    #include <stdio.h>
    int main(){
     SOCKET client_socket=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);
     printf("Compile successfully!");
    }
    

    造成問題是原因是:Code Runner是按照預先設定好的規則(默認為mingw也就是gcc/g++ xxx.cpp -o xxx),自動在終端執行編譯運行的指令,也就是圖片上紅色下劃線標注出的

    C:\Users\tangm> cd "c:\Users\tangm\Desktop\" ; if ($?) { g++ Untitled-1.cpp -o Untitled-1 } ; if ($?) { .\Untitled-1 }

    如果是使用了winsock2.h,同時又是使用gcc/g++編譯,在編譯時我們應該在編譯指令中額外添加-lwsock32指令,而Code Runner模板中并沒有這條指令

    即完整的編譯指令應該是:

    g++ xxx.cpp -o xxx.exe -lwsock32

    為了解決這個問題,我們必須使用原始而科學的方法,直接在集成終端上用命令行編譯和運行,vscode擁有一個集成終端,在集成終端上編寫指令就相當于在cmd(win7默認)或者powershell(win10默認)等系統終端上編寫指令

    按 Ctrl+~ 打開集成終端(其實是"`",打"~"是為了方便大家找到),先用cd命令切換到源文件所在的文件夾(我的在桌面),再使用gcc/g++編譯為可執行程序,最后運行程序,如果暫時不是很懂命令行,可以稍微學一下或者直接跳過這里


    三、調試程序

    當程序遇到匪夷所思的BUG時,我們可以單步調試來定位錯誤,vscode擁有非常人性化的調試功能,支持添加斷點,添加監視,顯示鼠標指向變量的值,調試控制臺查詢變量值,詳細細節我錄制了一個演示視頻,為了便于演示,我編寫了一個常規的快速排序,從小到大排序十個數,僅僅是為了便于演示調試功能,初學者不理解不要緊,對于熟悉算法的同學就讓你見笑了

    使用vscode調試程序示范

    更加高清的視頻可以看上傳到b站的版本

    https://www.bilibili.com/video/av63356142?

    www.bilibili.com

    下面開始正式配置調試環境

    首先在電腦上你習慣的位置新建一個文件夾,用于存放編寫的代碼,接下來配置好的調試環境,僅會對存放在這一個文件夾以及文件夾的子目錄里程序生效!

    務必注意,調試的文件名和文件路徑中不能出現中文字符!!否則將無法啟動調試!

    這是由于調試用到的mingw中的gdb不支持中文路徑!并非是vscode的原因,下面是兩個錯誤示范

    新建好文件夾后,在vscode界面,點擊:文件>打開文件夾,打開剛剛新建的文件夾(我的文件夾名叫CODE)

    再點擊新建文件夾在打開的文件夾下新建一個 .vscode文件夾(注意前面的"."號)

    然后在.vscode文件夾下新建兩個json文件分別叫做

    • launch.jsontasks.json

    本來這些是可以自動生成的,但有的地方不方便闡述,因此直接手動新建

    然后將下面的代碼復制到對應的json文件中去并保存

    launch.json

    launch.json中需要修改一處:"configurations"中"miDebuggerPath"選項需要設置為你的調試程序gdb.exe所在位置的絕對路徑,這里的是我電腦上mingw -w64的安裝位置

    無論安裝的是mingw還是mingw-w64,都會有一個gdb.exe在安裝目錄的bin文件夾下,一定要把對應的路徑修正否則無法調試

    {
     "version": "0.2.0",
     "configurations": [
     {
     "name": "C/C++",
     "type": "cppdbg",
     "request": "launch",
     "program": "${fileDirname}/${fileBasenameNoExtension}.exe",
     "args": [],
     "stopAtEntry": false,
     "cwd": "${workspaceFolder}",
     "environment": [],
     "externalConsole": true,
     "MIMode": "gdb",
     "miDebuggerPath": "C:/Program Files/mingw64/bin/gdb.exe",
     "preLaunchTask": "g++",
     "setupCommands": [
     {
     "description": "Enable pretty-printing for gdb",
     "text": "-enable-pretty-printing",
     "ignoreFailures": true
     }
     ],
     },
     ]
    }
    

    tasks.json

    {
     "version": "2.0.0",
     "command": "g++",
     "args": [
     "-g",
     "${file}",
     "-o",
     "${fileDirname}/${fileBasenameNoExtension}.exe"
     ],
     "problemMatcher": {
     "owner": "cpp",
     "fileLocation": [
     "relative",
     "${workspaceRoot}"
     ],
     "pattern": {
     "regexp": "^(.*):(\\d+):(\\d+):\\s+(warning|error):\\s+(.*)$",
     "file": 1,
     "line": 2,
     "column": 3,
     "severity": 4,
     "message": 5
     }
     },
     "group": {
     "kind": "build",
     "isDefault": true
     }
    }
    

    事實上現在已經可以正常調試了

    并且此時可以按 ctrl+shift+b 直接調用配置好的g++ task 編譯程序而不運行程序,類似于一些IDE的編譯選項

    測試一下,出于習慣,我在CODE文件夾下再新建一個C_CPP文件夾用于存放C/C++代碼,然后新建一個.cpp文件將我之前視頻演示中的代碼粘貼進去,并在適當的地方添加上斷點

    #include <bits/stdc++.h>
    using namespace std;
    void quicksort(int A[],int l,int r){
     int m=l;
     for(int i=l;i<r;i++){
     if(A[i]<A[r]){
     swap(A[i],A[m]);
     ++m;
     }
     }
     swap(A[m],A[r]);
     if(m>l+1)quicksort(A,l,m-1);
     if(m<r-1)quicksort(A,m+1,r);
    }
    int main(){
     int A[10],n;
     cin>>n;
     for(int i=0;i<n;i++){
     cin>>A[i];
     }
     quicksort(A,0,9);
     for(int i=0;i<10;i++){
     cout<<A[i]<<endl;
     }
    }
    

    按f5或者啟動調試的按鈕啟動調試,程序執行到斷點處會停下

    六個按鈕分別代表

    1. 繼續執行到下一個斷點處執行下一條語句,遇到函數直接執行完不會跳轉進函數執行下一條語句,遇到函數會跳轉進函數繼續單步執行跳出當前所在的函數,如果是主函數會結束程序重新啟動調試結束調試

    如果是希望像我視頻演示中一樣,啟動調試后不再額外顯示黑窗口而是像之前Code Runner插件那樣在界面下方顯示終端進行調試

    只需將launch.json中的"externalConsole"后面的值由true改為false

    在單步調試的過程中我們可以添加監視來實時監視變量或表達式值的變化

    也可以在調試控制臺中輸入想獲取結果的變量名或者表達式獲得當前的值

    或者直接將鼠標光標移動到變量位置上,會自動顯示當前變量的值

    如果數組開得過大或者是一些結構較復雜的類或結構體,查詢或顯示值可能會導致調試程序崩潰

    類似于code runner的問題: 如果是需要有額外的編譯指令如-lwsock32,需要調試前事先在tasks.json的args處添加上對應的指令,或者用 // 注釋掉launch.json中的 preLaunchTask:"g++"(啟動調試前執行g++編譯,按tasks指令格式編譯) 這一項,然后自己在按ctrl + ~ 打開終端手動編譯好后再執行調試

    記住:調試是屬于工作區設置,當前配置的調試環境只會對當前.vscode文件夾所在路徑下的文件生效,如果要換用別的文件夾,把.vscode這個文件夾拷貝過去即可

    最后,如果還存在什么疑問或者發現什么問題,歡迎在評論里指出

    如果給您解決了問題,不妨給我點個贊呢!

    學習C/C++的伙伴可以私信回復小編“學習”領取全套免費C/C++學習資料、視頻

    1. Windows系統下OpenCV及第三方庫文件的使用與下載


    如果沒有特殊要求,在Windows系統下可以直接使用OpenCV的預編譯版本。在github的opencv項目release中選擇相應release版本即可。然而,由于版權原因,預編譯的opencv并沒有包含諸多第三方工具,因此,如果要使用一些第三方工具,或者要在linux系統下使用openCV的話,還需要自己從源碼進行編譯。


    1.1 OpenCV下載與安裝


    OpenCV可以從官網下載,本文使用openCV 4.50版本。下載完成后點擊安裝,該安裝包實際上是指打包的壓縮文件,選擇路徑解壓即可,本文將opencv解壓安裝到D:\lib路徑下,解壓后的opencv所在目錄為D:\lib\opencv。在opencv目錄下,source為源文件的文件夾,build為編譯文件的文件夾,包括了VC14和VC15的預編譯文件。如果要直接使用編譯好的opencv,引用build目錄下的文件即可。本文在opencv目錄下新建一個rebuild目錄,用來保存自行編譯后的文件。


    1.2 OpenCV_Contrib庫下載與安裝


    要安裝第三方工具,需要從github上下載相應的opencv_contrib版本,這里從opencv-contrib倉庫的release版本中下載opencv_contrib-4.5.0版本.將解壓后的opencv_contrib-4.5.0文件夾直接放到opencv的source目錄下,以備后續編譯使用。


    1.3 OpenCV_3rdParty庫下載與安裝


    在OpenCV的編譯過程中,還需要一些第三方庫支持,這些庫文件包含在opencv_3rdparty庫中,該庫不同的分支(branch)文件對應了編譯過程中可能需要的ippicv、ffmpeg以及dnn等第三方庫,如果要安裝對應的工具,則需要下載對應的庫文件。需要注意的是,第三方庫文件的下載過程已經寫在opencv的編譯文件中了,但是由于國內網絡環境的原因,直接下載通常很難成功,這也是編譯失敗的主要原因之一。要使用預先下載的第三方庫文件代替直接下載。


    從github上下載的opencv_3rdparty庫,默認的readme分支僅包含簡單的說明文檔,可以使用git branch命令查看不同分支,并使用git checkout <分支名>切換到不同分支,以便將對應文件復制出來。在opencv/source/3rdparty文件夾下可以看到第三方工具文件夾,在各文件夾下有對應的編譯文件,例如ffmpeg文件夾下的編譯文件ffmpeg.cmake,在ffmpeg.cmake文件中,可以找到需要下載的文件版本例如ffmpeg/master_20200908。在opencv_3rdparty庫中checkout相應的分支即可找到對應文件。


    OpenCV編譯過程中下載的臨時文件位于opencv目錄下的.cache目錄中,可以在opencv目錄下新建.cache目錄,針對不同模塊新建包括ffmpeg、ippicv、xfeatures2d等目錄,將上一步中3rdparty庫對應分支的文件復制到對應的文件夾下即可。需要注意的是,OpenCV在緩存文件時并不是按照原始的文件名緩存在,而是在前面加上了md5校驗字符串,因此在復制文件時要將文件重命名。例如在ffmpeg.cmake文件中有以下內容:


    ...
    ocv_update(FFMPEG_FILE_HASH_BIN64 "cf5dba83edf8619f57ccff4edb989c62")


    那么就需要將原始的opencv_videoio_ffmpeg_64.dll文件重命名為cf5dba83edf8619f57ccff4edb989c62-opencv_videoio_ffmpeg_64.dll。典型的文件夾結構如下圖。如果在編譯過程中出現下載錯誤,可以檢查對應安裝包的編譯文件,看看是否與所需要的文件版本內容一致。


    另一個選擇是將下載的第三方文件放在特定文件夾中,并找到每個CMakelist.txt文件,將其中https://raw.githubusercontent.com....目錄修改為存放對應文件的位置如file:///D:/lib/3rdparty...。


    2.編譯環境和工具安裝


    2.1 安裝MinGW-W64的msys32發行版


    MinGW-w64 是一個Windows系統下支持GCC編譯器的工具,它支持64位和32位操作系統。使用MinGW-W64,可以替代微軟的VC編譯器來編譯c和c++項目。MSYS2是一個集成了pacman和MinGW-w64的Cygwin升級版的工具,用于在Windows系統下提供接近原生的Linux工具鏈。通過msys2集成的pacman包管理工具,可以方便地安裝和管理包,如果你熟悉Arch Linux,使用Pacman工具會感到格外方便。


    由于網絡環境的原因,MinGW-w64在國內使用很不方便,經常出現無法更新軟件的情況,因此這里使用包含了MinGW-w64的msys2發行版。


    從清華大學開源網站msys2下載地址下載msys2后采用默認設置安裝,安裝在C:\msys64目錄下。安裝完成后,打開C:\msys64\etc\pacman.d目錄并修改以下三個文件,以將msys2的軟件源配置為清華鏡像,加快下載速度。


    #編輯 /etc/pacman.d/mirrorlist.mingw32 ,在文件開頭添加:
    Server = https://mirrors.tuna.tsinghua.edu.cn/msys2/mingw/i686
    #編輯 /etc/pacman.d/mirrorlist.mingw64 ,在文件開頭添加:
    Server = https://mirrors.tuna.tsinghua.edu.cn/msys2/mingw/x86_64
    #編輯 /etc/pacman.d/mirrorlist.msys ,在文件開頭添加:
    Server = https://mirrors.tuna.tsinghua.edu.cn/msys2/msys/$arch


    打開C:\msys64\mingw64.exe,輸入以下命令以安裝完整的64位工具鏈,也可以按照toolchain下面的命令,單獨安裝gcc,g++和gdb三個工具,如果要安裝32位工具,則使用mingw32.exe和對應的mingw32與對應的i686相關工具。本文安裝64位工具鏈,安裝完成后,在mingw64.exe的命令行下輸入gcc --version、g++ --version或者gdb --version可以看到相應版本。


    #安裝64位工具和make工具
    pacman -S mingw64/mingw-w64-x86_64-toolchain
    pacman -S mingw64/mingw-w64-x86_64-make
    #上述命令包含了以下3個包,因此下面3個不需要再另外安裝
    pacman -S mingw64/mingw-w64-x86_64-gcc
    pacman -S mingw64/mingw-w64-x86_64-g++
    pacman -S mingw64/mingw-w64-x86_64-gdb
    
    #安裝32位工具
    pacman -S mingw32/mingw-w64-i686-toolchain
    pacman -S mingw32/mingw-w64-i686-make
    pacman -S mingw32/mingw-w64-i686-gcc
    pacman -S mingw32/mingw-w64-i686-g++
    pacman -S mingw32/mingw-w64-i686-gdb
    
    #pacman常用的操作指令
    pacman -Sy #更新軟件包數據
    pacman -R package-name #刪除軟件包
    pacman -S package-name #安裝軟件包
    pacman -Syu #更新所有
    pacman -Ss xx #查詢軟件xx的信息


    要在系統命令行中使用gcc等命令,還需要將minGW-W64添加到windows的環境變量中。在windows控制面板-->系統-->高級系統設置-->環境變量下,雙擊path參數并新建環境變量,將以下路徑添加到環境變量中(如果要使用32位的msys2,路徑也要相應地修改為32位的目錄)。環境變量配置完成后,在windows命令行或者powershell中輸入,輸入gcc --version、g++ --version或者gdb --version可以看到相應版本。


    注意:如果配置環境變量時命令行已經在運行,需要關掉命令行并重新打開,才能使配置生效。


    C:\msys64
    C:\msys64\mingw64\bin
    C:\msys64\mingw64\x86_64-w64-mingw32\bin

    2.2 安裝CMAKE工具


    CMake 是一個開源的跨平臺工具系列,旨在構建、測試和打包軟件。在CMaje官網下載對應的編譯工具進行安裝,并將安裝路徑寫入環境變量。在命令行輸入cmake --version可以看到cmake版本信息。安裝完成后,也可以通過CMake自帶的圖形界面Cmake GUI進行文件編譯。相比命令行而言,操作更簡單。


    2.3 安裝python2.7


    OpenCV編譯需要python的numpy工具包,如果要編譯OpenCV的python接口,同樣需要安裝python,雖然目前python已經停止對python2的支持,但和大多數歷史遺留項目一樣,opencv仍然需要安裝python2版本。在python官網下載python2的最新發行版python2.7.18并進行安裝,安裝時選中最后一條“將python寫入環境變量”,否則在安裝完成后需要手動將python以及python的script目錄添加的環境變量中。安裝完成后在命令行輸入python -V可以看到python的版本信息。


    修改pip鏡像為清華開源站,在命令行輸入以下兩行,更換python安裝庫位置,以提高包下載速度,更換完成后通過pip命令安裝numpy包。在編譯OpenCV的過程中,可能還需要python的debug文件,在python官網下載對應的debug info文件并解壓復制到python安裝目錄的DLLs目錄下。如果不需要編譯python相關內容,可以跳過該步驟。


    pip install pip -U
    pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple
    
    #安裝numpy
    pip install numpy


    如果安裝了msys2,那么在安裝python2.7之前,輸入python -V,是會顯示python3的版本信息的,這是因為minGW64的bin目錄中已經有了python3的文件,但是這個python沒有安裝pip,是不完整的,如果要為minGW64安裝pip,需要在該目錄下運行


    curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py #下載pip安裝腳本
    .\pip3.8.exe install pip #安裝pip


    注意,由于系統路徑中python已經指定為2.7版本,要使用該python3,需要使用完整的路徑加程序名稱。


    2.4 安裝JDK和Ant


    如果要編譯Java環境相關內容,還需要安裝和配置JDK和Apache-ant,下載JDK的windows版本并使用默認設置安裝,下載ant的可執行文件binary版本,并解壓縮,本文解壓縮到D:\lib\apache-ant-1.10.9目錄下,并將該目錄和bin子目錄添加到環境變量中。在命令行中輸入java和ant可以看到java命令行幫助和ant編譯出錯(因為沒有xml文件)信息,即說明安裝完成。如果不需要安裝Java相關內容,則不需要安裝上述工具。


    3. OpenCV編譯


    打開CMake(cmake-gui),輸入路徑(where is the source code)選擇opencv的源代碼路徑D:\lib\opencv\sources,輸出路徑(where to build the binary)選擇第一步新建的rebuild目錄D:\lib\opencv\rebuild。


    點擊左下角Configure,在編譯器選項中選擇MinGW Makefiles,下面選擇Specify native compilers,以使用MinGW64進行編譯,如果電腦安裝有Visual Studio也可以選擇相應的Visual Studio編譯器進行編譯。


    在下一步的compiles中,c語言選擇C:/msys64/mingw64/bin/gcc.exe,c++選擇C:/msys64/mingw64/bin/g++.exe。點擊確定后,系統會開始嘗試進行配置,第一次配置完成后,往往會出現很多紅色錯誤,需要一一解決。在該步驟還可能出現找不到項目文件或編譯器的錯誤,可以檢查配置過程輸入文件,往往是文件路徑錯誤,或者未安裝make工具等情況造成的。在這里需要調整部分參數配置,或者添加、修改參數。


    • Add Entry按鈕可以添加編譯參數,添加參數時選擇參數類型,布爾量通過打勾選擇有或無,字符串和路徑分別輸入對應值。
    • Search框可以輸入參數的一部分來過濾和搜索變量,以便于修改


    需要調整的配置包括:


    • OPENCV_ENABLE_ALLOCATOR_STATS,取消選擇,否則可能出現vs_version.rc.obj錯誤
    • BUILD_opencv_world選項可以打開,該選項將opencv編譯成一個包
    • OPENCV_ENABLE_NONFREE選項打開,以安裝contrib文件包內容
    • OPENCV_EXTRA_MODULES_PATH選項輸入contrib包的modules目錄D:\lib\opencv\sources\opencv_contrib-4.5.0\modules。
    • 修改CMAKE_INSTALL_PREFIX參數為D:/lib/opencv/rebuild/mingw64以更改安裝目錄
    • 取消BUILD_TESTS和BUILD_Opencv_python_tests。


    配置完成后再點擊Configure按鈕,然后點擊Generate按鈕。


    注意:從命令行進入D:\lib\opencv\rebuild目錄,輸入mingw32-make install -j16進行編譯。注意j后面的數字表示編譯線程數,一般為4且不能超過計算機支持的最大線程數。在多線程編譯的情況下,有時錯誤信息會被覆蓋掉,從而無法及時找到編譯出錯的信息,這種時候可以通過mingw32-make install -j1將編譯線程數改為1,以便在編譯出錯時及時停止編譯,以處理出錯信息。


    4. 在Visual Studio中使用OpenCV


    在Visual Studio中使用OpenCV,可以直接使用預編譯版本下的VC14、VC15版本,也可以參照上述步驟重新編譯。部分Visual Studio與Visual C++版本對應關系如下表,在實踐中,VC15的編譯版本也可以在Visual Studio 2019中使用:

    Visual Studio 版本Visual C++ 版本VS 6.0VC 6.0VS 2013VC 12VS 2015VC 14VS 2017VC 15VS 2019VC 16


    • 將編譯文件的bin目錄D:\lib\opencv\build\x64\vc15\bin添加到環境變量中。
    • 新建Visual Studio空項目。在Resource Files上右鍵單擊Add添加New Item,創建一個main.cpp文件。


    #include <iostream>
    #include <opencv2/opencv.hpp>
    
    using namespace std;
    using namespace cv;
    
    int main(int argc, char* argv[]) {
        const char* imagename = "D:\\Pictures\\Camera Roll\\digitalmeter1.jpg";//此處為你自己的圖片路徑
    
        //從文件中讀入圖像
        Mat img = imread(imagename, 1);
    
        //如果讀入圖像失敗
        if (img.empty()) {
            fprintf(stderr, "Can not load image %s\n", imagename);
            return -1;
        }
        //顯示圖像
        imshow("image", img);
    
        //此函數等待按鍵,按鍵盤任意鍵就返回
        waitKey();
        return 0;
    }


    • 在項目資源上右鍵->屬性,在VC++目錄(VC++ Directory)的包含目錄(include Directories)中添加
      D:\lib\opencv\build\include和D:\lib\opencv\build\include\opencv2。
    • 在庫目錄(Library Directories)中添加D:\lib\opencv\build\x64\lib。
    • 在鏈接器(Linker)的輸入(Input)中,添加D:\lib\opencv\build\x64\lib下的opencv_world450d.lib,對應編譯文件的debug模式,如果要編譯release版本,則需要選擇不帶d的opencv_world450.lib文件。


    編譯并運行項目,如果沒有錯誤,則可以顯示圖像內容。


    5. 在VS Code中使用OpenCV


    要在VS Code中使用OpenCV,需要安裝VScode的c/c++語言擴展插件,然后在項目文件夾下新建main.cpp文件,文件內容可與前節相同,根目錄下新建.vscode文件夾(也可以按照官方文檔指引,通過Terminal->Config Default Building Task命令新建該文件夾并在其中生成tasks.json文件),然后在其中新建tasksjson、lauch.json和c_cpp_properties.json三個文件。選擇Windows系統的VC編譯工具cl.exe和mingw64進行編譯時,編譯選項略有不同。兩種不同編譯工具下的文件內容分別如下:


    5.1 VC編譯器


    c_cpp_properties.json


    {
      "configurations": [
        {
          "name": "win",
          "includePath": [
            "${workspaceFolder}/**",
            "C:\\lib\\opencv\\build\\include",
            "C:\\lib\\opencv\\build\\include\\opencv2"      ],
          "defines": ["_DEBUG"],
          "compilerPath": "C:\\Program Files (x86)\\Microsoft Visual Studio\\2017\\BuildTools\\VC\\Tools\\MSVC\\14.16.27023\bin\\Hostx64\\x64\\cl.exe",
          "cStandard": "c11",
          "cppStandard": "c++17",
          "intelliSenseMode": "msvc-x64"
        }
      ],
      "version": 4
    }


    tasksjson


    {
      // See https://go.microsoft.com/fwlink/?LinkId=733558
      // for the documentation about the tasks.json format
      "version": "2.0.0",
      "tasks": [
        {
          "type": "shell",
          "label": "cl.exe build active file",
          "command": "cl.exe",
          "args": [
            "/Zi",
            "/EHsc",
            "/utf-8",
            "/Fe:",
            "${fileDirname}\\${fileBasenameNoExtension}.exe",
            "${file}",
            "/DYNAMICBASE",
            "C:\\lib\\opencv\\build\\x64\\vc15\\lib\\opencv_world450.lib"
          ],
          
          "problemMatcher": ["$msCompile"],
          "group": {
            "kind": "build",
            "isDefault": true
          }
        }
      ]
    }


    lauch.json


    {
        "version": "0.2.0",
        "configurations": [
            
            {
                "name": "cl.exe build and debug active file",
                "type": "cppvsdbg",
                "request": "launch",
                "program": "${fileDirname}\\${fileBasenameNoExtension}.exe",
                "args": [],
                "stopAtEntry": false,
                "cwd": "${workspaceFolder}",
                "environment": [],
                "externalConsole": false,
                "preLaunchTask": "cl.exe build active file"
            },
        ]
    }


    5.2 mingw64編譯器


    c_cpp_properties.json


    {
      "configurations": [
        {
          "name": "win",
          "includePath": [
            "${workspaceFolder}/**",
            "D:\\lib\\opencv\\rebuild\\install\\include",
            "D:\\lib\\opencv\\rebuild\\install\\include\\opencv2"      ],
          "defines": ["_DEBUG", "UNICODE", "_UNICODE"],
          "compilerPath": "C:\\msys64\\mingw64\\bin\\gcc.exe",
          "cStandard": "c11",
          "cppStandard": "c++17",
          "intelliSenseMode": "clang-x64"
        }
      ],
      "version": 4
    }


    tasksjson


    {
        // See https://go.microsoft.com/fwlink/?LinkId=733558
        // for the documentation about the tasks.json format
        "version": "2.0.0",
        "tasks": [
            {
                "type": "shell",
                "label": "g++.exe build active file",
                "command": "C:\\msys64\\mingw64\\bin\\g++.exe",
                "args": [
                    "-g", 
                    "-std=c++11", 
                    "${file}", 
                    "-o", 
                    "${fileDirname}\\${fileBasenameNoExtension}.exe",
                    "-I", "D:\\lib\\opencv\\rebuild\\install\\include",
                    "-I", "D:\\lib\\opencv\\rebuild\\install\\include\\opencv2",
                    "-L", "D:\\lib\\opencv\\rebuild\\install\\x64\\mingw\\lib",
                    "-l", "libopencv_core450",
                    "-l", "libopencv_imgproc450",
                    "-l", "libopencv_imgcodecs450",
                    "-l", "libopencv_video450",
                    "-l", "libopencv_ml450",
                    "-l", "libopencv_highgui450",
                    "-l", "libopencv_objdetect450",
                    "-l", "libopencv_flann450",
                    "-l", "libopencv_video450",
                    "-l", "libopencv_photo450",
                    "-l", "libopencv_videoio450"
              
                ],
                "options": {
                    "cwd": "C:\\msys64\\mingw64\\bin"
                },
                "problemMatcher": [
                    "$gcc"
                ],
                "group": {
                    "kind": "build",
                    "isDefault": true
                }
            }
        ]
    }


    lauch.json


    {
        "version": "0.2.0",
        "configurations": [
            
            {
                "name": "(gdb) Launch",
                "type": "cppdbg",
                "request": "launch",
                "program": "${fileDirname}\\${fileBasenameNoExtension}.exe",
                "args": [],
                "stopAtEntry": true,
                "cwd": "${workspaceFolder}",
                "environment": [],
                "externalConsole": true,
                "MIMode": "gdb",
                "miDebuggerPath": "C:\\msys64\\mingw64\\bin\\gdb.exe",
                "preLaunchTask": "g++.exe build active file",
                "setupCommands": [
                    {
                        "description": "Enable pretty-printing for gdb",
                        "text": "-enable-pretty-printing",
                        "ignoreFailures": true
                    }
                ]
            },
        ]
    }


    參考文獻


    • [1] 再談OpenCV Contrib編譯與安裝
    • [2] 將 VSCode 打造成 OpenCV 的 IDE(C++,window10 1803)
    • [3] VSCODE 配置cl.exe編譯器
    • [4] CL編譯器和LINK編譯器的使用方法
    • [5] Configure VS Code for Microsoft C++
    • [6] CMake+VS+opencv/opencv_contrib 環境配置
    • [7] VisualStudio2019安裝配置OpenCV的C++環境
網站首頁   |    關于我們   |    公司新聞   |    產品方案   |    用戶案例   |    售后服務   |    合作伙伴   |    人才招聘   |   

友情鏈接: 餐飲加盟

地址:北京市海淀區    電話:010-     郵箱:@126.com

備案號:冀ICP備2024067069號-3 北京科技有限公司版權所有