当前位置: 首页 > news >正文

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": {})。

相关文章:

  • Linux——线程互斥和同步
  • Dify+ollama+vanna 实现text2sql 智能数据分析 -01
  • 【第十三届蓝桥杯大赛软件赛省赛C/C++ 大学 B 组】C语言代码
  • Windows 系统下多功能免费 PDF 编辑工具详解
  • 二分类与多分类
  • # 基于 OpenCV 的运动目标检测与跟踪
  • C++ 多态:面向对象编程的核心概念(二)
  • RISC-V AIA学习3---APLIC第三部分
  • 基于python的电影数据分析及可视化系统
  • Sentinel[超详细讲解]-3
  • JavaScript 中的原型链与继承
  • 自用大模型学习笔记--transformer(不定期更新,欢迎挑错)
  • VS 2022,配置PCL 1.12.0,C#使用C++/CLI调用
  • Spring Boot 3.4.3 基于 SpringDoc 2 和 Swagger 3 实现项目接口文档管理
  • C++26 编译时反射简介
  • 0101数学_算法-常用符号-常用模板.md
  • stm32week9
  • 【Es】基础入门:开启全文搜索的大门
  • 数据结构每日一题day4(顺序表)★★★★★
  • conda的基础命令
  • 网站劫持怎么做/关键词优化是怎样收费的
  • 设计师做画册必备网站/个人接外包项目平台
  • 深圳龙岗网站制作/百度学术搜索入口
  • 荆门做网站公司/微指数查询入口
  • 旅游网站只做/各大网站的网址
  • 设计公司给公司做网站用了方正字体/seo关键词优化软件app