如题,在包含头文件时如果这样报错,通常有2种解决办法
- 在c_cpp_properties.json中增加Inlcude路径,如下,包含指定的include路径
"includePath": [ "${workspaceFolder}/**", "${default}", "D:/MSvscodeprojects/MinGW/bin/../lib/gcc/x86_64-w64-mingw32/8.1.0/include/c++", "D:\\MSvscodeprojects\\MyLibsAndSdk\\npcap_sdk_1_13\\Include", ],
- 如果上述方法无效,可以在tasks.json中设置-I和-L命令,指定g++的编译选项
"args": [
"-g",
"${file}",
"-o",
"${fileDirname}\\${fileBasenameNoExtension}.exe",
"-I",//-I 命令表示链接文件路径,后面添加你要include的文件夹就行
"D:\\MSvscodeprojects\\MyLibsAndSdk\\npcap_sdk_1_13\\Include",
"-L",
"D:\\MSvscodeprojects\\MyLibsAndSdk\\npcap_sdk_1_13\\Lib\\x64",
"-l",
"wpcap",
"-l",
"Packet",
"-std=c++17",
],
原因:vscode默认使用的g++/gcc编译器在多文件编译时较弱,不是gcc自带的头文件的话,则需要在task的编译命令中显式指定头文件位置。
并且,使用 #pragma comment(lib,"xxx.lib") 这种宏来指示链接库也无效,因为gcc不支持这种写法。而在visual studio中的VC编译器就可以支持。
解决方法:要么在vscode中显式指定头文件/库文件,或者使用cmake辅助。要么换编译器,比如vs2019。