我认为这是一个简单的问题,但我不知道该怎么做。我有一个正在 Windows 上编译和运行的 C++ 项目,但我遇到了我正在使用的 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 调试,但这目前也是一场艰苦的战斗。
我认为 Visual Studio 正在选择一个意外的工作目录,如果您编辑工作目录,它应该可以正常工作。
为了解决这个问题,我使用了系统内部的procmon工具。当我运行我的应用程序时,会显示尝试的文件的完整路径。
Visual Studio 在奇怪的工作目录(源位置)中启动应用程序,这可能是在调试器中运行时丢失文件的主要原因。
您可以通过转到解决方案资源管理器中的 .exe 位置,右键单击以编辑属性,然后选择“调试”配置属性来更改调试器起始目录。
在这里您可以设置命令参数 - 作为文本发送到程序中,以及工作目录。
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 解析器被禁用。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句