首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

在mingw和vscode上的相对路径问题

基础概念

相对路径:相对于当前文件或目录的路径。它不从文件系统的根目录开始,而是基于当前工作目录或当前文件的位置。

MinGW:Minimalist GNU for Windows,是一个Windows平台下的GCC编译器套件,提供了类Unix环境。

VSCode:Visual Studio Code,是一款轻量级但功能强大的源代码编辑器,支持多种编程语言和调试功能。

相关优势

  • MinGW:提供了在Windows上运行类Unix工具链的能力,使得开发者可以在Windows环境下使用GNU工具进行开发。
  • VSCode:跨平台编辑器,具有丰富的插件生态系统,支持多种编程语言,且性能高效。

类型与应用场景

  • 相对路径类型
    • 基于当前文件:如./subdir/file.txt
    • 基于当前目录:如../parentdir/file.txt
  • 应用场景
    • 在项目中引用资源文件(如图片、配置文件等)。
    • 在代码中包含其他源文件或库文件。

常见问题及解决方法

问题1:在VSCode中使用MinGW编译时,相对路径找不到文件。

原因

  • 当前工作目录设置不正确。
  • 相对路径相对于错误的基准点。

解决方法

  1. 确保VSCode的终端工作目录设置为项目根目录。可以通过在.vscode/settings.json中添加以下配置实现:
代码语言:txt
复制
{
    "terminal.integrated.cwd": "${workspaceFolder}"
}
  1. 检查相对路径是否正确。例如,如果要从src/main.cpp文件中包含include/header.h,则应使用#include "../include/header.h"

问题2:在MinGW命令行中使用相对路径时出错。

原因

  • MinGW命令行的当前工作目录可能不是预期的目录。

解决方法

  1. 使用cd命令切换到正确的目录。
  2. 使用绝对路径代替相对路径进行测试,以确认路径是否正确。

示例代码

假设有一个简单的项目结构如下:

代码语言:txt
复制
project/
├── src/
│   ├── main.cpp
│   └── include/
│       └── header.h
└── data/
    └── input.txt

main.cpp中,你可以这样引用header.hinput.txt

代码语言:txt
复制
#include "../include/header.h"

int main() {
    std::ifstream file("../data/input.txt");
    // ...
}

确保在VSCode的终端中运行编译命令时,当前工作目录是project/

参考链接

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

vscode 在不同设备上共用自己的配置

vscode 在不同设备上共用自己的配置 介绍 code settings sync:是专门用来同步vacode配置到Gitee中的插件,通过这个插件,可以在任何新的设备,新的平台同步自己的配置,快速的构建自己熟悉的...私人令牌写在setting json的gitee.access_token属性中 配置VsCode 中的setting json,在最后追加gitee.gist和gitee.access_token...测试上传配置 上传配置命令为upload setting,用快捷键Ctrl+Shift+P在VsCode的上方召唤出命令行,输入upload setting 这时在下方的输出窗口查看内容...在自己的Gitee中查看自己上传的配置 7....Gitee中生成私人令牌的时候仅勾选gists 和user_info),在通过快捷键Ctrl+Shift+P打开VsCode的command palette输入download setting就可以下载

27110

实战|C++在vscode上的调试配置

本⽂旨在让刚接触vscode却⼜不知如何 debug的童鞋能够快速搭建⾃⼰的编程环境,使更多的精⼒focus在coding或algrithm上,若有错误的地⽅,欢迎指正和交流。...在调试程序之前还需要安装⼀些vscode的插件,操作⾮常简单快捷。...若是false,程序会在vscode下⾯的界⾯运⾏和显⽰,有点像VS ?...接下去只要再弄2个⽂件,就可以debug你的项⽬了,第⼀个是tasks.json⽂件,可以在⽹上搜索如何⽣成,不过更直接的⽅ 式是直接在.vscode下新建⼀个tasks.json⽂件,然后把以下内容直接复制上去...总结 在vscode下配置C++调试环境主要就是做⼀件事:创(复)建(制)1个⽂件夹和3个⽂件: launch.json tasks.json 编译执⾏的脚本:例⼦中的脚本内容实际就是cmake内容

4.2K20
  • 在vscode中go编码发生的问题整理

    引言 使用VsCode进行Go程序开发,我们肯定会碰到一些问题,这些问题有些是IDE的配置问题,有些是下载包的版本不一致问题,本文主要针对在开发过程中碰到的问题做一个简单的回顾和整理。...前期准备,必看 在进行问题纠错前,先确保自己正确下载了golang的官方工具集go-tool,如果不确定,就跟着我的步骤操作一遍,可能操作后,你的问题就解决了。 1、配置golang的源。...等待安装完成,因为国内网络的特殊性,所以一定要谁知好go的代理源,不然总是下载失败。 执行这一步之后,重启Vscode,如果这个时候能够解决你的问题,那就不需要再往下看了。...具体问题解决方案 如果以上步骤不能解决你的问题,那就可以对应自己的问题来进行操作设置了。...如果你的项目是使用的Gopath模式(如果有同学对Gopath和Gomod这俩种模式不了解的,可以看看我的文章如何看待go moudle并应用于工作),那么你需要设置 go env -w GO111MODULE

    2.4K60

    在vscode中go编码发生的问题整理

    引言 使用VsCode进行Go程序开发,我们肯定会碰到一些问题,这些问题有些是IDE的配置问题,有些是下载包的版本不一致问题,本文主要针对在开发过程中碰到的问题做一个简单的回顾和整理。...前期准备,必看 在进行问题纠错前,先确保自己正确下载了golang的官方工具集go-tool,如果不确定,就跟着我的步骤操作一遍,可能操作后,你的问题就解决了。 1、配置golang的源。...执行这一步之后,重启Vscode,如果这个时候能够解决你的问题,那就不需要再往下看了。 具体问题解决方案 如果以上步骤不能解决你的问题,那就可以对应自己的问题来进行操作设置了。...image-20210317090415647 3、重启VsCode go mod模式 如果进行上述操作后还是不行,并且你是使用的go mod 模式,那还有一种比较特殊的方式可以解决这个问题。...如果你的项目是使用的Gopath模式(如果有同学对Gopath和Gomod这俩种模式不了解的,可以看看我的文章如何看待go moudle并应用于工作),那么你需要设置 go env -w GO111MODULE

    1.6K30

    在 windows 上运行的 podman 默认的挂载相对路径是什么

    我在 windows 运行 podman 当成 docker 的代替品,从网上抄了 ollama 的部署命令,发现里面存在一个相对路径的挂载文件夹。...我期望拿到 ollama 的下载内容,需要寻找到 podman 默认的挂载路径,但在网上找了一圈,可能是我的关键词问题,没有找到,于是记录本文期望能帮到大家 如下面命令 podman run -d -v...ollama:/root/.ollama -p 11434:11434 --name ollama ollama/ollama 使用了 -v ollama:/root/.ollama 参数将本机的 ollama...文件夹挂载到容器里面的 /root/.ollama 文件夹 那默认情况下的本机 ollama 文件夹是在哪?...在 podman 里面挂载相对路径是什么 在 podman 里面挂载相对路径是在 WSL 里面的 ~/.local/share/containers/storage/volumes/ 文件夹

    25710

    已上架的App在AppStore上无法搜索到的问题

    ​ 已上架的App在AppStore上无法搜索到的问题在AppStore上搜不到已经上架的应用程序可以采取以下解决办法:拨打iTunes提供的支持电话:4006-701-855(中国时间9:00-17:...发送邮件给Review团队,在iTunes Connect登录后点击页面底部的"联系我们"。选择问题类型为"App Review",如果是应用商店相关问题选择"App Store Review"。...预计大约半小时后,你的App就会重新变为可供销售状态,并在AppStore上显示出来。遇到这样的问题确实令人苦恼,这种由于苹果缓存原因引起的故障确实让人头疼(笑)。...编辑三.使用appuploader服务同步证书​如果勾选“使用appuploader服务同步证书”此项,我们将可以在不同电脑上下载和使用此证书,将ipa文件上传到App Store给苹果审核,不需要Mac...编辑新建证书完成后另存文件保存下来,证书就已经制作好了,点击另存到想要保存的位置就好了。​编辑制作好的证书就是.p12格式的,无需转换。​

    57320

    已上架的App在AppStore上无法搜索到的问题

    # 5 上传到uni Push 后台对应位置 Team ID 在苹果开发者中心获取 # AppID创建(每个端一个 建议Bundle ID和安卓包名一致) # 1 在苹果开发者账号页面中间位置或者左侧菜单点击...# 5 再次确认填入和勾选的信息后,点击Register按钮。 # 6 注册成功后效果。 ...不是登录密码,若不知道如何得到密码,参考文章 (opens new window)# 5 大概过几分钟,就可以上传成功,但要注意,上传成功后苹果开发者中心不能马上见到,因为苹果开发者中心还要验证app的程序是否有其他问题...,大概过20分钟左右,就可以在苹果开发者中心的构建版本见到了,然后你就可以继续在苹果开发者中心继续上架app到app store了。 ...# 6 上架的过程中还会要求我们提供各种设备的屏幕快照(截屏),但假如你没有这么多类型的ios设备怎么截屏呢?你可以使用工具自动生成ios截屏

    24120

    PAUSE指令在Skylake上引起的性能问题

    前言: docker部署的相同的业务,Host OS也是相同的版本,但是一段代码跑在E5-2630 v4和Gold 5118上,性能却相差很多。...看起来并不能解释上述的问题。 3,pause cycles google了一下,有人提到在skylake上,pause指令的执行的cycles变多了。...一个很犀利的同事给出了这个问题的暂时解决办法:在5118上pause指令的性能大约下降了14倍,所以“GOMP_SPINCOUNT”的值就是30000000000的14分之1,大约2000000000。...在启动前执行#export GOMP_SPINCOUNT=2000000000,问题缓解。 5,glibc 在glibc2.23上, ? 在glibc2.27上, ?...在不同版本的glibc使用pthread_spin_lock函数,会出现不同的热点。 后记: 其他的问题,在skylake上如果性能突然变得不好,热点抓到是pause指令,很可能就是这个原因导致。

    2.1K40

    浅谈在进行jsp页面编程时,路径问题的解决(绝对路径与相对路径)

    1、一般来讲,在使用Java EE时,在创建jsp页面时会自动为我们创建以下代码。在写代码规定了页面的语言,导入的包,编码格式等。...basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; %> 在使用...在后面书写路径时,直接可以省去项目名/虚拟项目名的书写(相对路径) 例如:kk="duty?...method=exportXls&empId="+empId+"&deptno="+deptno+"&dtDate="+dtDate;可以看到跳转的连接是没有加项目名的 2、如果导入的项目中没有basepath...则需要用到${pageContext.request.contextPath}来自动获取获取当前的项目名(相对路径) 列如: <a href="${pageContext.request.contextPath

    1.8K30

    MySql在服务器上使用问题的总结

    服务器是Windows Server 2012,我自己安装了一个MySql数据库,然后一个Web程序和客户端程序都想访问数据库,但是遇到一堆问题。...解决后记录一下 1.IIS访问数据库的问题 未能加载文件或程序集“MySql.Data”或它的某一个依赖项。找到的程序集清单定义与程序集引用不匹配。...异常来自 HRESULT:0x80131040 解决:把应用程序池设置为4.0 2.客户端应用程序在服务器上运行,无法连接数据库的问题 System.BadImageFormatException:...生成此程序集的运行时比当前加载的运行时新,无法加载此程序集。 解决办法:为应用程序建立一个同名的 **.exe.config文件,保护以下内容   3.客户端远程连接数据库失败 解决办法: mysql 8.0密码验证机制问题导致

    1.1K20

    解决innerHtml 在Jquery上使用无效果的问题

    ' + loadTime + 'ms'); innerHTML在JQuery中使用的话是无效果的, JQuery提供了三种方法实现指定标签赋内容:.html(),.val(),.text()。...三种方法区别具体: .html()用为读取和修改元素的HTML标签 对应js中的innerHTML .html()是用来读取元素的HTML内容(包括其Html标签), .html()方法使用在多个元素上时...对应js中的innerText text()用来读取元素的纯文本内容,包括其后代元素;.text()方法不能使用在表单元素上 .val()用来读取或修改表单元素的value值 .val()是用来读取表单元素的..."value"值,.val()只能使用在表单元素上 关于三者的区别 .val()方法和.html()相同,如果其应用在多个元素上时,只能读取第一个表单元素的"value"值,但是.text()和他们不一样...,如果.text()应用在多个元素上时,将会读取所有选中元素的文本内容。

    43510

    整理:Visual Studio Code (vscode) 配置C、C++环境编写运行C、C++(主要Windows、简要Linux)

    现在是2019.7.21,由于这阵一直在忙,今天我用最新的VSCode(Version 1.36.1) 和最新的Cpp插件(version 0.24.0)按照本文的安装步骤从零开始试了一下,由于vscode...vscode在短暂的联网查找后会列出插件列表,如图: 点击箭头所指处的按钮安装插件,安装过程可能会有些慢耐心等待 安装完成后vscode会提示你重启vscode,此时重启即可 更新:因为我装这个插件已经是几年之前了...4、配置系统环境变量path 然后配置系统环境变量path,这一步为必须 在 我的电脑 上右键 属性: 然后按照下面步骤做即可,注意最后新建的项要与之前MinGW安装位置相对应 Windows7...只是vscode不是自己在程序末尾停止而已啦,和IDE不一样。...,然后问是否要创建,不知道是BUG还是啥,这纠结了我N久,因为我有些cpp文件是中文命名的,我去Github上找相应的issue也没有找到我想要的这个问题解答,最后偶然间发现英文命名的文件调试时不会出现这个问题

    5K10

    【Python】扫盲帖:关于在Windows、Linux和Mac上安装设置Python的问题

    来源|Analytics Vidhya 概述 在Linux、Mac或Windows机器上安装Python时遇到的问题 一步一步安装Python及流行的数据科学工具 1 介绍 在你的机器上安装Python...我个人在尝试在我的Linux和Windows机器上安装Python时曾遇到过各种各样的问题。一般在出问题之前安装总是很顺利。出了问题之后要么是兼容性问题,要么是关于某种依赖性缺失的问题。 ?...如果你曾经在尝试在你的机器上安装Python时遇到过这种琐碎的问题,那么本文就是为你准备的。...观看视频^2,获得在macOS上安装Python的完整运行过程: 7 在Windows上安装Python的步骤 让我们看看在Windows上安装Python和其他数据科学库的步骤。...你可以跳过安装微软的VSCode: ? 单击finish。 ? 完成了,这时Python已经为你开始分析数据和构建机器学习模型做好了准备。

    3.2K30

    vscode配置CC++环境(保姆级详细教程)

    找到系统变量中path路径,点击打开 在最后添加上刚才MinGW文件夹所在的路径(保证路径最后是\mingw64\bin就行)。 最后连续点击确定三次层层退出。...这样MinGW编译器套件基本上就配好了。 接下来,我们需要安装一个C/C++插件,我们直接搜索c/c++,选择最上面那个直接安装上就行。...在VScode上写下第一行代码 VSCode上写代码首先需要打开文件夹,这样也可以方便管理代码和编译器产生的可执行程序和VSCode生成的配置文件(总之就是很有好处)。...在写代码前,先要考虑好把代码放在什么地方管理。 这里我创建一个名字叫test_vscode的文件夹,在我的C根目录当中。...我们要保证创建的文件夹中的路径是没有中文名的,不然后续会有一系列问题,就比如调试莫名报错之类,这也是计算机学习中的一个小tips,一般路径名中都不能含有中文,不然可能会发生不可估量的错误。

    5.5K70

    彻底解决docker在windows上的端口绑定问题

    考虑到您可能没有耐心看下去(我相信大多数人遇到这个问题的时候没空细究起因),我先把解决方案贴在前面。...错误的解决方案 来自 StackOverflow 的错误解决方案 在该问题的高赞回答中,他使用了以下命令: net stop winnat docker start container_name net...也就是因此,该回答下面有些人回复有用,有些人回复没用,就是因为这种解决方式解决问题的概率非常的随机。 错误背景 进入正题,为什么会发生这个错误?这里不得不说明一下两个和问题有关的特性。...在 Windows Vista(或 Windows Server 2008)之前,动态端口范围是 1025 到 5000;在其之后的版本中,新的默认起始端口为 49152,新的默认结束端口为 65535...但是 Windows 自动更新有时会出错(万恶的自动更新),把“TCP 动态端口范围”起始端口被重置为 1024,导致 Hyper-V 在预留端口的时候占用了常用端口号,使得一些常用端口因为被预留而无法使用

    6.6K20
    领券