Visual Studio 文件名

Visual Studio Filenames

我认为这是一个简单的问题,但我不知道该怎么做。我有一个 C++ 项目,我正在编译 运行ning Windows 但我正在 运行ning 遇到我正在使用的 NiTE2 库的问题。当 NiTE2 调用设置所需的特定函数时,它会搜索位于“./NiTE2/s.dat”的 "s.dat" 文件。问题是当我在 Visual Studio 环境中 运行 它试图搜索路径“.\NiTE2/s.dat”。这不是错字,它混合了斜线。该程序无法找到必要的文件,这是可以理解的。但是,当我 运行 我的程序在 Git Bash 下时,它执行得很好。

使用 Git Bash 有效,但它使调试变得极其困难,有谁知道如何或是否有可能获得 Visual Studio 运行-time 环境对路径使用正斜杠而不是 Windows 默认反斜杠?定义查找位置的路径 "s.dat" 隐藏在我无法编辑的专有代码中,因此解决方案已经失效。

旁注:如果有帮助的话,我是 运行ning Windows 10。我正在尝试使用 VSCode 进行 bash 调试,但目前这也是一场艰苦的战斗。

我认为 visual studio 选择了一个意外的工作目录,如果您编辑工作目录,它应该可以正常工作。

为了解决这个问题,我使用了系统内部工具procmon。当我 运行 我的应用程序时,会显示尝试的文件的完整路径。

Visual Studio 在一个奇怪的工作目录(源代码的位置)中启动应用程序,这可能是在调试器中 运行ning 时丢失文件的主要原因。

您可以更改调试器的起始目录,方法是转到解决方案资源管理器中的 .exe 位置,右键单击以编辑属性,然后选择 "Debugging" 配置 属性。

在这里您可以设置命令参数 - 作为文本发送到程序和工作目录。

Windows 有 2 个路径解析器。本机 NT 路径解析器不接受 /,但有一个 DOS 解析器可以被激活。 DOS 解析器的不同之处在于:-

  • 不关心“\”或“/”
  • 允许相对搜索c:\program files\myApp\..\yourapp\prog.exe
  • 不关心连续的“\”或“//”
  • 关于文件末尾的空格有一些奇怪的规则。 (DOS 解析器无法打开此类)。

使用“\?”打开文件时可以禁用 DOS 解析器放在路径前面并使用函数的 unicode 变体。

wfopen( L"\\?\c:\program files\yourapp\prog.exe", L"rb" );

所以在正常操作中,“\”和“/”是等价的,除非 DOS 解析器被禁用。