問題描述
我正在嘗試在 VSCode 中構建我的 C++ 項目.但是,我遇到 OpenCV 的鏈接問題錯誤 LNK2001:未解析的外部符號".我已經構建了與 vcpkg 一起使用的所有庫.
I'm trying to build my C++ project in VSCode. However, I'm experiencing link issues with OpenCV "error LNK2001: unresolved external symbol". I've build all the libraries I use with vcpkg.
我使用這個 .bat 文件構建:
I build using this .bat file:
@echo off
if exist "C:Program Files (x86)Microsoft Visual Studio2019BuildToolsVCAuxiliaryBuildvcvarsall.bat" (
call "C:Program Files (x86)Microsoft Visual Studio2019BuildToolsVCAuxiliaryBuildvcvarsall.bat" x64
) else (
call "C:Program Files (x86)Microsoft Visual Studio2019CommunityVCAuxiliaryBuildvcvarsall.bat" x64
)
set compilerflags=/Od /Zi /EHsc /std:c++latest /I include /I C:includesvcpkginstalledx64-windowsinclude
set linkerflags=/OUT:binmain.exe
cl.exe %compilerflags% src*.cpp /link %linkerflags% /LIBPATH:C:includesvcpkginstalledx64-windowslib
del bin*.ilk *.obj *.pdb
我的 tasks.json 文件是:
My tasks.json file is:
{
"version": "2.0.0",
"tasks": [
{
"label": "Build C++ project",
"type": "shell",
"group": {
"kind": "build",
"isDefault": true
},
"command": ".\build.bat"
},
{
"label": "Build & run C++ project",
"type": "shell",
"group": {
"kind": "test",
"isDefault": true
},
"command": ".\build.bat && .\bin\main.exe"
}
]
}
我的launch.json文件是:
My launch.json file is:
{
"version": "0.2.0",
"configurations": [
{
"name": "C++ Debug (Windows)",
"type": "cppvsdbg",
"request": "launch",
"program": "${workspaceFolder}/bin/main.exe",
"preLaunchTask": "Build C++ project",
"args": [],
"stopAtEntry": false,
"cwd": "${workspaceFolder}",
"environment": [],
"externalConsole": true,
}
]
}
最后我的 settings.json 文件是:
and finally my settings.json file is:
{
"terminal.integrated.shell.windows": "cmd.exe"
}
我似乎找不到任何關于如何使用 MSVS 編譯器將 vcpkg 庫與 VSCode 正確鏈接的文檔.我真的很感激一些幫助.
I can't seem to find any documentation on how to properly link vcpkg libraries with VSCode using the MSVS compiler. I would really appreciate some help.
推薦答案
我最近在 Windows 10 上安裝了 OpenCV 4.3.0 (64bits) 并且不得不配置一個工作區在 Visual Studio Code (VSC) 中構建一個簡單的應用程序.
I recently installed OpenCV 4.3.0 (64bits) on Windows 10 and had to configure a workspace in Visual Studio Code (VSC) to build a simple application.
以下配置使用 cl.exe
的 x64 版本,這是 Microsoft Visual Studio 2019(社區版)附帶的 C/C++ 編譯器來構建 OpenCV 應用程序.
The following configuration uses the x64 version of cl.exe
, the C/C++ compiler that ships with Microsoft Visual Studio 2019 (Community Edition) to build the OpenCV application.
請注意在此 tasks.json
文件中定義的路徑,因為它們在您的系統中可能會有所不同:
Pay attention to the paths defined on this tasks.json
file because they might be different in your system:
{
"version": "2.0.0",
"windows": {
"options": {
"shell": {
"executable": "C:\WINDOWS\System32\cmd.exe",
"args": [ "/d", "/c" ]
}
},
"isShellCommand": true,
"showOutput": "always",
"echoCommand": true,
},
"tasks": [
{
"label": "build_vs2019",
"type": "shell",
"windows": {
"command": "call "C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Auxiliary\Build\vcvars64.bat" && cl.exe",
"args": [
"/Zi",
"/EHsc",
"/Fe:",
"${fileDirname}\${fileBasenameNoExtension}.exe",
"${file}",
"-I", "C:\opencv\build\include",
"/link", "/libpath:C:\opencv\build\x64\vc15\lib", "opencv_world430.lib"
],
"problemMatcher": [ "$msCompile" ],
},
"group": {
"kind": "build",
"isDefault": true
}
},
{
"label": "run",
"type": "shell",
"dependsOn": [ "build_vs2019" ],
"windows": {
"command": "${fileDirname}\${fileBasenameNoExtension}.exe",
"args": [ "superDark.jpg" ],
"options": {
"env": {
"PATH": "C:\opencv\build\x64\vc15\bin"
}
}
},
"presentation": {
"reveal": "silent",
"clear": true,
"showReuseMessage": false,
}
}
]
}
必須使用此配置來替換工作區中的配置.嘗試運行任務時,它將為您提供兩個選項供您選擇:
This configuration must be used to replace the one in your workspace. It will give you two options to select from when attempting to run tasks:
build_vs2019:將shell定義為
cmd.exe
并執行vcvars64.bat
來設置環境變量和路徑,讓您使用cl.exe
的 x64 版本.它還指定了構建基于 OpenCV 的應用程序所需的頭文件和所需的庫.此選項構建應用程序.
build_vs2019: defines the shell as
cmd.exe
and executesvcvars64.bat
to setup the environment variables and paths that let you use the x64 version ofcl.exe
. It also specifies the headers and required libraries to build an OpenCV-based application. This option builds the application.
run:取決于上一個任務的成功,在 cmd 行上運行 OpenCV 應用程序.它調整 PATH
環境變量以指向 OpenCV DLLs 目錄.此選項執行應用程序.
run: depends on the success of the previous task to run the OpenCV application on the cmd-line. It adjusts the PATH
environment variable to point to OpenCV DLLs directory. This option executes the application.
這篇關于在 VSCode 中使用 MSVS 編譯器構建 OpenCV 應用程序的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,也希望大家多多支持html5模板網!