VS Code C/C++项目设置launch.json中的environment参数解决支持库路径问题

问题描述

Windows 11 VS Code C/C++ 开发环境搭建分别写了ccpp两个示例代码,在运行过程中c代码没有发现问题(可能简单,没有用到太多支持),但使用了stlcpp代码并没有运行出来,如下图:
问题描述
出问题的代码如下:

// 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参数解释

  1. environment 数组: 这是定义环境变量的地方。
  2. 对象结构: 每个对象包含 "name" (环境变量名) 和 "value" (环境变量值)。
  3. 修改 PATH:
    • 我们定义了一个名为 "PATH" 的环境变量。
    • 它的值由三部分组成:
      • "C:/path/to/your/libs/bin": 你的第一个自定义目录路径 (使用正斜杠或双反斜杠)。
      • "D:/another/dependency/bin": 你的第二个自定义目录路径。
      • ;: Windows 上的路径分隔符。
      • ${env:PATH}: VS Code 的变量替换,它会在启动时获取当前环境的 PATH 值。
    • 通过将你的目录放在 ${env:PATH} 之前并用分号分隔,你实际上是将这些目录预置 (prepend) 到了运行时环境的 PATH 中。这通常是推荐的做法,特别是对于加载 DLL,因为它确保你的库优先于系统或其他地方可能存在的同名库被找到。
  4. 路径分隔符:
    • Windows 上,使用分号 (;) 作为 PATH 中不同目录的分隔符。
    • Linux/macOS 上,使用冒号 (:) 作为分隔符。如果你需要跨平台兼容,可以利用 launch.json 中的平台特定配置部分("windows": {}, "linux": {}, "osx": {})。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Humbunklung

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值