在 VS Code 上使用 Boost

use Boost on VS Code

本文关键字:Boost VS Code      更新时间:2023-10-16

g++ 使用此任务找不到 boost/regex.hpp:

{
"taskName": "C4B", // Compile for debug with boost
"command": "g++",
"args": [
"-g","${fileBasename}""-o","${fileBasenameNoExtension}"
],
"type": "shell"
},

我也尝试使用这个参数:"-IC:\boost\include\boost-1_64\boost"

g++ 通过 MinGW 安装,我将垃圾箱添加到 PATH 环境变量

我一直使用Visual Studio IDE...我是命令行的新手

这就是我在 VS Code 上包含路径的方式:

"includePath": [
"C:\MinGW\lib\gcc\mingw32\5.3.0\include\c++",
"C:\boost\include\boost-1_64\boost"
],
"browse": {
"path": [
"C:\MinGW\lib\gcc\mingw32\5.3.0\include\c++",
"C:\boost\include\boost-1_64\boost"
],

在此之前,我只包括C:\boost\include

这是错误:

test1.cpp:1:27: fatal error: boost/regex.hpp: No such file or directory

编译终止。 我该如何解决这个问题?


更新 1:

所以我包含了包含和 lib 文件夹:

"includePath": [
"C:\MinGW\lib\gcc\mingw32\5.3.0\include\c++",
"C:\boost\include",
"C:\boost\lib"
],

我的编译任务是:

{
"taskName": "C4B", // Compile for debug with boost
"command": "g++",
"args": [
"-g","${fileBasename}","-IC:\boost\include\boost-1_64","-o","${fileBasenameNoExtension}"
],
"type": "shell"
}

现在我有这个输出:

C:Usersdj_alAppDataLocalTempcctBnhDJ.o: In function `ZN5boost16re_detail_10640027cpp_regex_traits_char_layerIcEC2
ERKNS0_21cpp_regex_traits_baseIcEE':
C:/boost/include/boost-1_64/boost/regex/v4/cpp_regex_traits.hpp:370: undefined reference to `boost::re_detail_106400::c
pp_regex_traits_char_layer<char>::init()'
C:Usersdj_alAppDataLocalTempcctBnhDJ.o: In function `ZN5boost16re_detail_10640011raw_storage6extendEj':
C:/boost/include/boost-1_64/boost/regex/v4/regex_raw_buffer.hpp:131: undefined reference to `boost::re_detail_106400::r
aw_storage::resize(unsigned int)'
C:Usersdj_alAppDataLocalTempcctBnhDJ.o: In function `ZN5boost16re_detail_10640015save_state_initC1EPPNS0_11saved_
stateES4_':
C:/boost/include/boost-1_64/boost/regex/v4/perl_matcher_non_recursive.hpp:107: undefined reference to `boost::re_detail
_106400::get_mem_block()'
C:Usersdj_alAppDataLocalTempcctBnhDJ.o: In function `ZN5boost16re_detail_10640015save_state_initD1Ev':
C:/boost/include/boost-1_64/boost/regex/v4/perl_matcher_non_recursive.hpp:115: undefined reference to `boost::re_detail
_106400::put_mem_block(void*)'
C:Usersdj_alAppDataLocalTempcctBnhDJ.o: In function `ZN5boost16re_detail_10640012perl_matcherIN9__gnu_cxx17__norm
al_iteratorIPKcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEESaINS_9sub_matchISC_EEENS_12regex_traitsIcNS_16cpp
_regex_traitsIcEEEEE9match_impEv':
C:/boost/include/boost-1_64/boost/regex/v4/perl_matcher_common.hpp:214: undefined reference to `boost::re_detail_106400
::verify_options(unsigned int, boost::regex_constants::_match_flags)'
C:Usersdj_alAppDataLocalTempcctBnhDJ.o: In function `ZN5boost16re_detail_10640012perl_matcherIN9__gnu_cxx17__norm
al_iteratorIPKcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEESaINS_9sub_matchISC_EEENS_12regex_traitsIcNS_16cpp
_regex_traitsIcEEEEE18unwind_extra_blockEb':
C:/boost/include/boost-1_64/boost/regex/v4/perl_matcher_non_recursive.hpp:1352: undefined reference to `boost::re_detai
l_106400::put_mem_block(void*)'
C:Usersdj_alAppDataLocalTempcctBnhDJ.o: In function `ZN5boost16re_detail_10640011raise_errorINS_20regex_traits_wr
apperINS_12regex_traitsIcNS_16cpp_regex_traitsIcEEEEEEEEvRKT_NS_15regex_constants10error_typeE':
C:/boost/include/boost-1_64/boost/regex/pattern_except.hpp:75: undefined reference to `boost::re_detail_106400::raise_r
untime_error(std::runtime_error const&)'
C:Usersdj_alAppDataLocalTempcctBnhDJ.o: In function `ZN5boost16re_detail_10640012perl_matcherIN9__gnu_cxx17__norm
al_iteratorIPKcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEESaINS_9sub_matchISC_EEENS_12regex_traitsIcNS_16cpp
_regex_traitsIcEEEEE12extend_stackEv':
C:/boost/include/boost-1_64/boost/regex/v4/perl_matcher_non_recursive.hpp:222: undefined reference to `boost::re_detail
_106400::get_mem_block()'
C:Usersdj_alAppDataLocalTempcctBnhDJ.o: In function `ZN5boost16re_detail_10640018basic_regex_parserIcNS_12regex_t
raitsIcNS_16cpp_regex_traitsIcEEEEE4failENS_15regex_constants10error_typeEiNSt7__cxx1112basic_stringIcSt11char_traitsIc
ESaIcEEEi':
C:/boost/include/boost-1_64/boost/regex/v4/basic_regex_parser.hpp:237: undefined reference to `boost::regex_error::rege
x_error(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, boost::regex_constants:
:error_type, int)'
C:/boost/include/boost-1_64/boost/regex/v4/basic_regex_parser.hpp:238: undefined reference to `boost::regex_error::rais
e() const'
C:/boost/include/boost-1_64/boost/regex/v4/basic_regex_parser.hpp:237: undefined reference to `boost::regex_error::~reg
ex_error()'
C:/boost/include/boost-1_64/boost/regex/v4/basic_regex_parser.hpp:237: undefined reference to `boost::regex_error::~reg
ex_error()'
C:Usersdj_alAppDataLocalTempcctBnhDJ.o: In function `ZN5boost16re_detail_10640019basic_regex_creatorIcNS_12regex_
traitsIcNS_16cpp_regex_traitsIcEEEEE16fixup_recursionsEPNS0_14re_syntax_baseE':
C:/boost/include/boost-1_64/boost/regex/v4/basic_regex_creator.hpp:783: undefined reference to `boost::regex_error::reg
ex_error(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, boost::regex_constants
::error_type, int)'
C:/boost/include/boost-1_64/boost/regex/v4/basic_regex_creator.hpp:784: undefined reference to `boost::regex_error::rai
se() const'
C:/boost/include/boost-1_64/boost/regex/v4/basic_regex_creator.hpp:783: undefined reference to `boost::regex_error::~re
gex_error()'
C:/boost/include/boost-1_64/boost/regex/v4/basic_regex_creator.hpp:872: undefined reference to `boost::regex_error::reg
ex_error(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, boost::regex_constants
::error_type, int)'
C:/boost/include/boost-1_64/boost/regex/v4/basic_regex_creator.hpp:873: undefined reference to `boost::regex_error::rai
se() const'
C:/boost/include/boost-1_64/boost/regex/v4/basic_regex_creator.hpp:872: undefined reference to `boost::regex_error::~re
gex_error()'
C:/boost/include/boost-1_64/boost/regex/v4/basic_regex_creator.hpp:783: undefined reference to `boost::regex_error::~re
gex_error()'
C:/boost/include/boost-1_64/boost/regex/v4/basic_regex_creator.hpp:872: undefined reference to `boost::regex_error::~re
gex_error()'
C:Usersdj_alAppDataLocalTempcctBnhDJ.o: In function `ZN5boost16re_detail_10640019basic_regex_creatorIcNS_12regex_
traitsIcNS_16cpp_regex_traitsIcEEEEE16create_startmapsEPNS0_14re_syntax_baseE':
C:/boost/include/boost-1_64/boost/regex/v4/basic_regex_creator.hpp:938: undefined reference to `boost::regex_error::reg
ex_error(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, boost::regex_constants
::error_type, int)'
C:/boost/include/boost-1_64/boost/regex/v4/basic_regex_creator.hpp:939: undefined reference to `boost::regex_error::rai
se() const'
C:/boost/include/boost-1_64/boost/regex/v4/basic_regex_creator.hpp:938: undefined reference to `boost::regex_error::~re
gex_error()'
C:/boost/include/boost-1_64/boost/regex/v4/basic_regex_creator.hpp:938: undefined reference to `boost::regex_error::~re
gex_error()'
C:Usersdj_alAppDataLocalTempcctBnhDJ.o: In function `ZN5boost16re_detail_10640019basic_regex_creatorIcNS_12regex_
traitsIcNS_16cpp_regex_traitsIcEEEEE15create_startmapEPNS0_14re_syntax_baseEPhPjh':
C:/boost/include/boost-1_64/boost/regex/v4/basic_regex_creator.hpp:1139: undefined reference to `boost::regex_error::re
gex_error(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, boost::regex_constant
s::error_type, int)'
C:/boost/include/boost-1_64/boost/regex/v4/basic_regex_creator.hpp:1140: undefined reference to `boost::regex_error::ra
ise() const'
C:/boost/include/boost-1_64/boost/regex/v4/basic_regex_creator.hpp:1139: undefined reference to `boost::regex_error::~r
egex_error()'
C:/boost/include/boost-1_64/boost/regex/v4/basic_regex_creator.hpp:1139: undefined reference to `boost::regex_error::~r
egex_error()'
C:Usersdj_alAppDataLocalTempcctBnhDJ.o: In function `ZNK5boost16re_detail_10640031cpp_regex_traits_implementation
IcE12error_stringENS_15regex_constants10error_typeE':
C:/boost/include/boost-1_64/boost/regex/v4/cpp_regex_traits.hpp:447: undefined reference to `boost::re_detail_106400::g
et_default_error_string(boost::regex_constants::error_type)'
C:/boost/include/boost-1_64/boost/regex/v4/cpp_regex_traits.hpp:449: undefined reference to `boost::re_detail_106400::g
et_default_error_string(boost::regex_constants::error_type)'
C:Usersdj_alAppDataLocalTempcctBnhDJ.o: In function `ZN5boost16re_detail_10640019basic_regex_creatorIcNS_12regex_
traitsIcNS_16cpp_regex_traitsIcEEEEE12insert_stateEiNS0_19syntax_element_typeEj':
C:/boost/include/boost-1_64/boost/regex/v4/basic_regex_creator.hpp:320: undefined reference to `boost::re_detail_106400
::raw_storage::insert(unsigned int, unsigned int)'
C:Usersdj_alAppDataLocalTempcctBnhDJ.o: In function `ZN5boost12object_cacheINS_16re_detail_10640021cpp_regex_trai
ts_baseIcEENS1_31cpp_regex_traits_implementationIcEEE3getERKS3_j':
C:/boost/include/boost-1_64/boost/regex/pending/object_cache.hpp:66: undefined reference to `boost::scoped_static_mutex
_lock::scoped_static_mutex_lock(boost::static_mutex&, bool)'
C:/boost/include/boost-1_64/boost/regex/pending/object_cache.hpp:66: undefined reference to `boost::scoped_static_mutex
_lock::~scoped_static_mutex_lock()'
C:/boost/include/boost-1_64/boost/regex/pending/object_cache.hpp:66: undefined reference to `boost::scoped_static_mutex
_lock::~scoped_static_mutex_lock()'
C:Usersdj_alAppDataLocalTempcctBnhDJ.o: In function `ZNK5boost16re_detail_10640031cpp_regex_traits_implementation
IcE18lookup_collatenameEPKcS4_':
C:/boost/include/boost-1_64/boost/regex/v4/cpp_regex_traits.hpp:680: undefined reference to `boost::re_detail_106400::l
ookup_default_collate_name(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)'
C:Usersdj_alAppDataLocalTempcctBnhDJ.o: In function `ZN5boost16re_detail_10640031cpp_regex_traits_implementationI
cE4initEv':
C:/boost/include/boost-1_64/boost/regex/v4/cpp_regex_traits.hpp:721: undefined reference to `boost::re_detail_106400::r
aise_runtime_error(std::runtime_error const&)'
C:/boost/include/boost-1_64/boost/regex/v4/cpp_regex_traits.hpp:736: undefined reference to `boost::re_detail_106400::g
et_default_error_string(boost::regex_constants::error_type)'
C:Usersdj_alAppDataLocalTempcctBnhDJ.o: In function `ZN5boost16cpp_regex_traitsIcE16get_catalog_nameEv':
C:/boost/include/boost-1_64/boost/regex/v4/cpp_regex_traits.hpp:1117: undefined reference to `boost::scoped_static_mute
x_lock::scoped_static_mutex_lock(boost::static_mutex&, bool)'
C:/boost/include/boost-1_64/boost/regex/v4/cpp_regex_traits.hpp:1117: undefined reference to `boost::scoped_static_mute
x_lock::~scoped_static_mutex_lock()'
C:/boost/include/boost-1_64/boost/regex/v4/cpp_regex_traits.hpp:1117: undefined reference to `boost::scoped_static_mute
x_lock::~scoped_static_mutex_lock()'
collect2.exe: error: ld returned 1 exit status

如果C:boostincludeboost-1_64是你安装Boost的地方(即解压缩源码包(,那么这是你应该添加到包含目录的路径,而不是C:boostincludeboost-1_64boost。尾随boost目录存在于代码#include指令中。

如果您使用的是图形 IDE,我希望它在保存项目时根据需要自动执行转义反斜杠 (''( 字符。否则,您可能必须手动转义它们。

正如Andrey Semashev所说,一定要使用Boost的安装位置,而不是解压缩的源位置。标准 如果您在安装 Boost 时未选择安装前缀,则为 C:\Boost on Windows。

对我来说,在Visual Studio Code中,我唯一需要做的就是打开项目的task.json,并在以下行中如下所示:

"args":[
"-I",
"C:/Boost/include/boost-1_73" ]

这将创建一个编译器参数,其中包含 boost 目录。然后在文件中,您应该能够包含Boost,如以下示例所示:#include 。

在整个任务.json文件下面:

{
"version": "2.0.0",
"tasks": [
{
"type": "shell",
"label": "C/C++: g++.exe build active file",
"command": "C:\Program Files\mingw-w64\x86_64-8.1.0-posix-seh-rt_v6-rev0\mingw64\bin\g++.exe",
"args": [
"-g",
"${workspaceFolder}\*.cpp",
"-o",
"${fileDirname}\myProgram.exe",
"-I",
"C:/Boost/include/boost-1_73"
],
"options": {
"cwd": "${workspaceFolder}"
},
"problemMatcher": [
"$gcc"
],
"group": {
"kind": "build",
"isDefault": true
}
}
]
}