首页 - 通讯 - vs2010获取相对路径不正确_VS2010VC++2010的相对路径问题

vs2010获取相对路径不正确_VS2010VC++2010的相对路径问题

2023-09-25 05:24

背景:在VC++2010中新建一个MFC项目,项目名称为MyApp。在项目文件夹(..\projects\MyApp\..)中生成MyApp.sln、MyApp.sdf两个文件和一个MyApp文件夹,所有的源文件、头文件及资源文件都位于MyApp文件夹中。生成解决方案后,还会在项目文件夹中产生Debug和Release文件夹,相应的exe文件位于这两个文件夹中。

问题:现在有一个文件假设为sample.txt需要在程序中访问,代码中该文件的相对路径为".\\sample.txt",那么该文件的位置应该在哪里?

回答:根据情况,如果是在IDE中启动调试,sample.txt应该放在..\projects\MyApp\MyApp路径中,也就是应该和头文件位于同一目录。如果直接在Debug或Release中双击exe启动程序,那么应该放到Debug或Release中。另外,在代码中写".\\sample.txt"或"sample.txt"等效。

如果代码中的相对路径是两个点,即"..\\sample.txt",那么该文件应该和MyApp.sln位于同一目录。

综上所述,开发过程中外部文件要与头文件同一目录,而部署时直接将该文件发布到exe的同一目录。

转载于:https://www.gsm-guard.net/brissnote/p/3402631.html

1. 文件引用

要引用文件,首先要知到文件所在的路径,而文件位置有相对路径和绝对路径之分,

绝对路径:文件在电脑上的所在路径,如E:\Software\vs2010\install\Setup,每个文件的绝对路径只有一个,如果要播放一个mp3文件,则可以通过mciSendString(_T("open \"E:\\Software\\vs2010\\install\\Setup\\game_www.gsm-guard.net3\" alias bkmusic"), NULL, 0, NULL); 相对路径:编译器本身有一个索引零点,相对路径即是相对该零点的路径,不同的编译器其默认索引零点不同,在VS2010中的默认索引零点为.vcxproj文件所在路径,故如果在此路径下放置了一个mp3格式的文件,则可以通过mciSendString(_T("open \".\\game_www.gsm-guard.net3\" alias bkmusic"), NULL, 0, NULL);来播放 通过绝对路径引用文件,如果将代码拷贝给他人,代码将会运行不正常。

2. 文件路径书写:代码中文件路径的书写,父目录与子目录之间要通过两个反斜杠‘\\’相连,因为在C语言中‘\\’才能输出一个反斜杠。 3. VS2010相对路径更改:在项目名称上右击,选择属性–>配置属性–>调试,在当前界面更改工作目录即可(工作目录路径即为相对路径)。 $(ProjectDir)为编译器默认相对路径,上图中’. .‘的作用是返回上一级目录’\'的作用是下一级目录。

CMake生成VS2010工程相对路径和绝对路径问题说明

声明:引用请注明出处http://www.gsm-guard.net/lg1259156776/

主要是使用CMake生成的VS2010的工程,最好不要直接拷贝,最好的方法还是把给的那个CMake工程放入到合适的工程下,然后再重新Cmake生成,这样可能会减少路径出错的可能性。

下面是https://www.gsm-guard.net/Bug/view.php?id=9042中给出的问题描述,说CMake的相对路径是一个bug

Hi all,

I noticed that eventhough the CMAKE_USE_RELATIVE_PATH is set to ON, the Program Database File name (.pdb) in the .vcproj still uses an absolute path.

However, all other paths in the *.vcproj seem to use relative paths.

Regards,

上面说明问题的版本是2.8版本的,后来查看最新版本3.4的release notes发现:

The CMAKE_USE_RELATIVE_PATHS variable no longer has any effect. Previously it was partially implemented and unreliable.

说,先前只是实现了部分的相对路径,而且不可靠。所以,华丽丽的败了,不要试图尝试了,只能浪费时间。最好的解决方案,还是按照我上面提到的那种方法去配置好了。

注: 关于相对路径,有时不太确定’.\’所代表的当前路径到底是在哪?这个时候可以利用在VS2010的include选项编辑,输入’.\’后面就会自动输出当前路径下文件和文件夹,这样就确定了。【仅供参考】

2015-10-20 调试记录 张朋艺

转载于:https://www.gsm-guard.net/huty/p/8518997.html