正如本post中所述,我调试SDL程序时的工作目录是相对于.vcproj而不是.exe(它应该是IMO)
所以我想知道我是否可以改变它,所以当我按F5时,路径将相对于.exe而不是.vcproj? 我正在使用的当前(相对简单的)解决方法是打开文件夹并从那里启动程序,但我更愿意只按F5。
答案 0 :(得分:4)
您问题的天真答案是,您可以将调试配置属性中的工作目录选项设置为$(TargetDir)
。默认设置为$(ProjectDir)
,默认情况下,项目目录不是输出可执行文件的位置。但是,我建议您不要使用此选项,我将在下面解释。
你试图以错误的方式解决这个问题。您的基本问题是您假设工作目录与包含可执行文件的目录相同。没有理由这样做,你不应该依赖它。您知道这些文件与可执行文件位于同一目录中,因此您应该查看它,而不是工作目录,有时,巧合地,与可执行目录相同。
因此,不要依赖于根据自己的喜好设置工作目录的过程调用者,而是使程序独立于工作目录。您声明您希望使用您知道相对于可执行文件目录的位置的文件。所以有答案。使用包含可执行文件的目录构建文件的完整路径。
如果您需要找到可执行文件的位置,请致电GetModuleFileName()
,然后删除文件名。你剩下的是包含你的可执行文件的目录。将它与文件的相对路径相结合,您的代码现在独立于工作目录。