龙空技术网

使用相对路径的问题

热情的旭日vv 713

前言:

眼前看官们对“使用相对路径”大约比较注意,大家都想要学习一些“使用相对路径”的相关知识。那么小编在网络上网罗了一些对于“使用相对路径””的相关文章,希望姐妹们能喜欢,看官们一起来学习一下吧!

问题引入

项目中需要集成其他团队做的一个带有界面的工具。使用该工具时碰到了如下问题:

直接双击这个工具的exe,可以正常启动。通过程序调用,或者用Everything打开这个工具,工具可以启动,但是界面上的图标全部消失了。问题分析

打开命令行,执行目录切换到该exe目录下,然后调用该exe,正常启动。将执行目录切换到上上级目录,然后调用该exe,工具不能正常启动,图标全部消失。

通过分析,猜测该工具设置图标等资源文件时使用的是相对路径。

验证

生成一个程序read_a.exe,该程序用来打开该exe目录下面的a.txt文件(使用相对路径"./a.txt"),正常打开a.txt输出“Ok”,打开失败输出“Failed”。

将a.txt放到read_a.exe的目录下面。通过命令行切换到该目录,执行该程序read_a.exe。程序可以正常运行,成功打开a.txt。

将执行目录切换到上一级,然后执行该exe。程序打开a.txt失败。

通过程序调用。

解决办法 1:调用方切换工作路径

在调用时,将程序的工作目录临时切换到被调用程序read_a.exe的目录。调用之后再将工作目录切换到原来的路径。在Windows平台下面可以使用APISetCurrentDirectory和GetCurrentDirectory。

输出

解决方法 2:获取自身的执行路径

为了使用相对路径,更方便地加载文件,可以首先获得exe自身的绝对路径,然后用其拼接相对路径。

标签: #使用相对路径