如何在c ++中将工作目录设置为“解决方案目录”

时间:2011-01-27 10:56:26

标签: c++ visual-studio

我想将当前目录设置为解决方案diretory /配置名称。 我怎么做? 我可以用某种方式使用全局变量吗?

编辑:我正在尝试读取文件,当前目录在代码中间发生变化。我想改回来。

5 个答案:

答案 0 :(得分:37)

在Visual Studio 2010中:

  1. 转到项目属性(在解决方案资源管理器中单击项目名称,然后在弹出菜单上单击属性)。
  2. 然后,在Configuration Properties / Debugging下,将Working Directory设置为$(SolutionDir)$(Configuration)\

答案 1 :(得分:4)

您可以使用posix子系统(<direct.h>)并访问函数

_getcwd()/_wgetcwd()获取当前工作目录
_chdir()/_wchdir()设置当前工作目录

如果您需要跨平台代码,可以执行以下操作:

#ifdef _WIN32
#  include <direct.h>
#  define getcwd _getcwd
#  define chdir _chrdir
#else
#  include <unistd.h>
#endif

并使用getcwdchdir(没有前导下划线)。

答案 2 :(得分:3)

您是否尝试过使用环境变量$(SolutionDir)?

参考这个帖子here

另外,希望VS的版本无关紧要,但这个答案是基于平台VS2005的假设而提供的。

希望这有帮助。

答案 3 :(得分:2)

如果您当前的目录正在更改,您可能应该在启动时将您的工作目录保存在稍后可以访问的某个变量中,以便将cwd设置回那里。至少这是我理解你的问题的方式。

要获得cwd,this可能会有所帮助。

答案 4 :(得分:0)

  1. 出于Visual Studio的目的(包括标头等),您可以使用此处列出的$(ProjectDir)或$(SolutionDir)之类的宏:VS macro list

    < / li>
  2. 要使用您的应用程序的代码读取文件,请使用Windows API函数GetCurrentDirectory,该函数会检索您的进程目录的路径。编译后的代码可能独立于项目而存在,因此有必要相对于进程(exe)引用数据文件的路径。

问题的作者似乎询问第二项,其他人回答第一项。