【发布时间】:2017-12-10 14:09:12
【问题描述】:
我认为这是一个简单的问题,但我不知道该怎么做。我有一个 C++ 项目,我正在 Windows 上编译和运行,但我遇到了我正在使用的 NiTE2 库的问题。当 NiTE2 调用设置所需的特定函数时,它会搜索位于“./NiTE2/s.dat”的“s.dat”文件。问题是当我在 Visual Studio 环境中运行它时,它会尝试搜索路径“.\NiTE2/s.dat”。这不是错字,它混合了斜线。可以理解,该程序找不到必要的文件。但是,当我在 Git Bash 下运行我的程序时,它执行得很好。
使用 Git Bash 可以工作,但调试非常困难,有谁知道如何或是否可以让 Visual Studio 运行时环境使用正斜杠而不是 Windows 默认的反斜杠作为路径?定义在何处找到“s.dat”的路径隐藏在我无法编辑的专有代码中,因此解决方案已失效。
旁注:如果有帮助的话,我正在运行 Windows 10。我正在尝试使用 VSCode 进行 bash 调试,但目前这也是一场艰苦的战斗。
【问题讨论】:
-
混合斜线在 Windows 上工作得很好。找不到文件当然是非常常见的,默认工作目录是最糟糕的全局变量。只是不要使用相对路径,从程序的安装目录创建一个完整路径,这样无论你把它放在哪里都可以工作,并且根本不依赖配置。
-
@HansPassant 我同意你的观点,即相对路径是一个糟糕的主意我总是在我的代码中使用绝对路径,但就像我提到的那样,我无法修改那部分代码。它被埋在 NiTE2 库中,我只有最终编译的版本。如果在 Windows 上混合斜杠是可以接受的,那么为什么它抱怨在 Visual Studio 环境中找不到文件,但在 git bash 和命令提示符下却很好?
-
好吧,喂这只野兽,给它它想吃的东西。在代码中显式设置工作目录,以便您知道它始终是正确的。使用 SetCurrentDirectory() 或
_chdir()。 -
@HansPassant 我不知道这个功能,谢谢!这感觉很不对劲,但它解决了我的问题,我现在可以成功调试了。
-
您还可以通过项目设置告诉 Visual Studio,当从 IDE 运行程序时,哪个目录应该是当前目录:
Configuration Properties | Debugging | Working Directory。
标签: c++ windows visual-studio visual-studio-2010 filepath