欢迎来到Introzo百科
Introzo百科
当前位置:网站首页 > 技术 > vs2010执行文件路径_

vs2010执行文件路径_

日期:2023-09-29 08:32

1.文件参考

要引用文件,首先要知道文件所在的路径,文件位置可以分为相对路径和绝对路径,

绝对路径:文件在电脑上的路径,如E:\Software\vs2010\install\Setup。每个文件只有一个绝对路径。如果要播放mp3文件,可以通过 mciSendString(_T(" open \"E:\\Software\\vs2010\\install\\Setup\\game_www.introzo.com3\" alias bkmusic"), NULL, 0,无效的);相对路径:编译器本身有一个索引零点,相对路径就是相对于零点的路径。不同的编译器有不同的默认索引零点。 VS2010中默认的索引零点是.vcxproj文件所在的路径。因此,如果该路径下放置的是mp3格式文件,可以通过 mciSendString( _T("open \".\\game_www.introzo.com3\" alias bkmusic"), NULL, 0, NULL);播放绝对路径引用的文件。如果将代码复制给别人,代码将无法正常运行。

2。文件路径写入:在代码中写入文件路径时,父目录和子目录必须用两个反斜杠“\\”连接,因为C语言中只有“\\”才能输出反斜杠。 3.更改VS2010的相对路径:右键单击项目名称,选择属性-->配置属性-->调试,更改当前界面中的工作目录(工作目录路径为相对路径)。 $(ProjectDir) 是编译器的默认相对路径。上图中‘..’的作用是返回上一级目录。 '\'是下一级目录的功能。

VS2010设置目标文件(.dll/.exe)的输出路径和导入库文件(.lib)

默认情况下,目标文件和导入库文件的路径为Debug或Release,文件名为工程名。扩展名是.dll/.exe 和.lib。那么我们如何修改.dll/.exe和.lib输出路径和文件名呢?首先我们需要了解VS2010中几个宏名称的含义,以及如何在配置页面中更改它们?

宏名称含义 修改位置 $(OutDir) 目标文件的输出目录 配置属性-常规-输出目录$(TargetName) 目标文件的名称 配置属性-常规-目标名称$(TargetExt) 的扩展名目标文件配置属性-General-Target Extension$(ProjectName) 项目的名称可以直接在IDE的Solution explorer视图中修改

目标文件的路径和文件名由IDE中的配置属性-链接器-常规-输出文件的内容指定。默认情况下,它是$(OutDir)$(TargetName)$(TargetExt)。从上面的宏名称介绍我们可以知道,只要修改配置属性-常规-输出目录,就可以改变目标文件的输出路径。同时也可以直接修改配置属性-链接器-常规-输出文件。

导入库文件路径和文件名由IDE中配置属性-链接器-高级-导入库的内容指定。默认为空,在这种情况下,将采用目标文件路径和名称,扩展名为 .lib。所以我们可以直接修改配置属性-链接器-高级-导入库的内容来改变导入库文件的输出路径。

解决方案和项目关系

假设创建了一个新项目ProjectExam,解决方案名为SolutionExam。此时生成的最外层目录是SolutionExam,也就是说整个解决方案的内容都在这个文件夹中。此 SolutionExam 文件夹包含解决方案配置文件 SolutionExam.sln 和 ProjectExam 文件夹。 ProjectExam 文件夹代表整个ProjectExam 项目的所有内容。该文件夹包含ProjectExam.vcproj的项目配置文件、.h头文件和.cpp源文件。如果在SolutionExam解决方案下新建一个名为ProjectExam2的项目,则SolutionExam文件夹下会生成一个ProjectExam2文件夹,用于存放ProjectExam2项目的所有内容。

通常解决方案文件夹只包含解决方案配置文件sln和一个或多个项目文件夹,以及一个Debug文件夹和一个Release文件夹。最终生成的exe或dll存放在Debug和Release文件夹中。 【分别在debug模式和release模式下编译后生成Debug文件夹和release文件夹】。每个项目文件夹包含 C++ 源文件、头文件、项目配置文件、一个 Debug 文件夹和一个 Release 文件夹。这里的Debug和Release文件夹只存放中间编译结果obj,不存放exe、dll之类的东西。

【摘要】VC2010项目配置环境$(TargetPath)

环境路径设置

项目属性设置的目录起始点是项目配置文件的位置,实际上就是项目头文件和源文件的位置。

(1) 在项目的“常规”栏中:

“输出目录”为$(SolutionDir)$(ConfigurationName),所以在调试时,会在solution文件夹下创建一个debug(ConfigurationName的值为debug)文件夹,并在该文件夹下生成ProjectExam.lik链接器和 ProjectExam.exe 文件。

“中间目录”为$(ConfigurationName),因此会在ProjectExam项目文件夹下(即ProjectExam.vcproj的项目配置文件所在位置)创建一个debug文件夹,并在此文件夹中生成ProjectExam.obj二进制文件。

(2) 在连接器的“常规”栏中:

“输出文件”选项为 $(OutDir)$(TargetName)$(TargetExt),其中 $(OutDir) 已在项目的“常规”列中的“输出目录”选项中分配了值。 [$(OutDir) 的值在项目的常规“输出目录”属性中定义]。

“输出目录”属性只能起到给$(OutDir)系统变量赋值的作用,与“改变生成的.exe文件的存储位置”无关。也就是说,如果“输出目录”中设置的$(OutDir)值在C盘,而“输出文件”中设置输出文件的位置在D盘,则最终生成的exe文件将在D盘.

$(TargetDir)的值在生成exe文件后自动赋值给exe文件的位置。 “输出文件”最终决定了exe文件的位置,最终决定了$(TargetDir)的值。 $(TargetPath) 和 $(TargetDir) 的行为类似。系统变量$(OutDir)的值由VS项目的“输出目录”属性决定,而$(TargetDir)和$(TargetPath)的值由VS项目的“输出文件”属性决定VS 项目。

(3) 调试工作目录

“调试”栏中的“工作目录”项,该属性默认为$(ProjectDir),但表示工作目录为项目目录,即项目配置文件ProjectExam.vcproj所在目录位于。工作目录代表操作的目标目录,它会随着OpenFileDialog、SaveFileDialog等对象确定的目录而变化。例如,程序运行过程中会生成一个txt文本文件。如果在文件创建过程中没有指定绝对路径,而只指定创建文件的文件名,那么默认会在工作目录下创建文本文件。当然,读取一些配置文件也会在工作目录中搜索,但是请注意,生成的exe文件与工作目录无关,不会放在工作目录中。一般来说,工作目录是程序运行时默认读取的目录。也就是说,工作目录是运行过程中唯一可以识别的默认目录。工作目录是在代码中使用 GetCurrentDirectory 等函数获取的。工作目录和执行目录可以不同。例如,一个人住在北京,但他的工作地点不一定在北京,而可能在天津。

开始调试后,启动一个新进程,自动将这个新进程的工作目录设置为vs项目属性中的工作目录,然后新进程启动对应的exe程序。但如果不使用vs调试来启动exe,而是直接双击exe文件启动新进程,则新进程的工作目录会自动设置为exe文件所在目录。这与vs启动调试不同。

(4) 调试时的命令

同样在调试选项下,与工作目录选项同级的“命令”选项是设置使用调试时从哪里启动exe文件的。默认是$(TargetPath),当然可以更改。调试模式下启动的exe是“command”选项中设置的exe文件,而不是debug或release下默认bin目录下的exe文件。最后,上面所说的“调试”是指在VS下启动exe,包括debug模式和release模式。不要将调试理解为唯一的调试模式。

“Debug”栏中的“Command”属性项默认为$(TargetPath),TargetPath代表目标输出文件的全路径名,所以一般其代表的值等于“输出文件”的值由属性表示。当然,您也可以手动更改“command”属性的值。

(5) 连接器输入选项

“链接器”栏下“输入”选项下的“附加依赖项”项。此项是设置链接程序时使用的静态库。相当于链接编译好的“代码”。由此,我们可以简单地认为这些库就相当于我们自己写的.cpp文件,只不过这些库编译后是.cpp(这里只需要库名,其他地方设置搜索路径)。

“设置附加依赖”相当于在代码中写入“#pragma comment(lib,“库名.lib”)语句。如果使用相对路径,则如下:

#pragma comment(lib,"..\\debug\\TestLib.lib");

反斜杠使用双反斜杠,因为它是用双引号括起来的字符串,由程序解释,需要转义。

注:

#include "..\TestVideoApplication.h" 不是程序解释的字符串,因此无需转义。

附录:常用设置宏

ConfigurationName 配置名称,通常为 Debug 或 Release

IntDir 是编译器用来生成 obj 文件的中间目录

OutDir 链接器使用的输出目录

ProjectDir 项目目录

ProjectName 项目名称

SolutionDir 解决方案目录

TargetDir 目标输出文件所在目录

TargetExt 目标输出

的扩展名

TargetFileName 目标输出文件名,包括扩展名

TargetName 目标输出名称,不包括扩展名

TargetPath 目标输出文件的完整路径名

关灯