我认为这是一个简单的问题,但我无法弄清楚如何去做。我有一个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调试,但目前这也是一场艰苦的战斗。
答案 0 :(得分:0)
我认为visual studio正在选择一个意想不到的工作目录,如果你编辑工作目录,它应该可以正常工作。
要解决此问题,我使用系统内部procmon工具。当我运行我的应用程序时,会显示尝试的文件的完整路径。
Visual Studio在一个奇怪的工作目录(源的位置)中启动一个应用程序,这可能是在调试器中运行时丢失文件的主要原因。
您可以通过转到解决方案资源管理器中的.exe位置,右键单击以编辑属性,然后选择"调试"来更改调试程序的起始目录。配置属性。
在这里,您可以设置命令Arguments - 作为文本发送到程序中,以及工作目录。
Windows有2个路径解析器。本机NT路径解析器不接受/,但有一个可以激活的DOS解析器。 DOS解析器的不同之处在于: -
c:\program files\myApp\..\yourapp\prog.exe
使用' \?'打开文件时,可以禁用DOS解析器预先添加到路径并使用函数的unicode变体。
wfopen( L"\\\\?\\c:\\program files\\yourapp\\prog.exe", L"rb" );
因此在正常操作中,' \'和' /'是相同的,除非DOS解析器被禁用。