问题描述
Windows 11 VS Code C/C++ 开发环境搭建分别写了c和cpp两个示例代码,在运行过程中c代码没有发现问题(可能简单,没有用到太多支持),但使用了stl的cpp代码并没有运行出来,如下图:
 
 出问题的代码如下:
// hello.cpp
#include <iostream>
#include <vector>
#include <string>int main() {std::vector<std::string> msg {"Hello", "C++", "World", "from", "VS Code", "and", "MinGW-w64!"};for (const std::string& word : msg) {std::cout << word << " ";}std::cout << std::endl;std::cout << "GCC version: " << __VERSION__ << std::endl; // 输出 GCC 版本return 0;
}
 
问题分析
程序没有问题,但跑不出结果,这应该是引用的库没有正确指向导致,考虑这是一个MinGW程序,且这个MinGW我并没有在环境变量中“全局”设置,那么可以判断是“丢引用”了。
问题解决
1. 静态编译
在编译命令中加上-static关键字,把编译后的可执行代码静态化,包含了相关运行库,问题得以解决(当然,这么干文件包会变大)。
2. 修改launch.json文件
 
修改launch.json文件的environment参数,把相关环境变量加进去。
            "environment": [{"name": "PATH","value": "D:/tools/mingw64/bin;${env:PATH}"}],
 
问题得到解决:
 
environment参数解释
 
environment数组: 这是定义环境变量的地方。- 对象结构: 每个对象包含 
"name"(环境变量名) 和"value"(环境变量值)。 - 修改 
PATH:- 我们定义了一个名为 
"PATH"的环境变量。 - 它的值由三部分组成: 
"C:/path/to/your/libs/bin": 你的第一个自定义目录路径 (使用正斜杠或双反斜杠)。"D:/another/dependency/bin": 你的第二个自定义目录路径。;: Windows 上的路径分隔符。${env:PATH}: VS Code 的变量替换,它会在启动时获取当前环境的PATH值。
 - 通过将你的目录放在 
${env:PATH}之前并用分号分隔,你实际上是将这些目录预置 (prepend) 到了运行时环境的PATH中。这通常是推荐的做法,特别是对于加载 DLL,因为它确保你的库优先于系统或其他地方可能存在的同名库被找到。 
 - 我们定义了一个名为 
 - 路径分隔符: 
- 在 Windows 上,使用分号 (
;) 作为PATH中不同目录的分隔符。 - 在 Linux/macOS 上,使用冒号 (
:) 作为分隔符。如果你需要跨平台兼容,可以利用launch.json中的平台特定配置部分("windows": {},"linux": {},"osx": {})。 
 - 在 Windows 上,使用分号 (