【发布时间】:2019-06-11 01:31:32
【问题描述】:
我正在尝试使用 stb_image 将图像加载到我的程序中。每次我直接在visual studio内部运行程序(按f5,在调试和发布中发生)时,文件的打开都会失败。如果我在 Windows 资源管理器中运行已编译的 exe,则加载工作正常。使用 fstream 将文本文件加载到字符串中时也会出现同样的问题。
我尝试将文件放在我的代码目录和最终构建文件夹中,但没有不同的结果。使用不同的权限和不同的构建设置运行 Visual Studio。
【问题讨论】:
-
我的建议是使用您的调试器来查看原因。在打开文件的代码中放置一个断点,看看当您单步执行打开文件的代码时会发生什么。你的代码也应该有某种形式的错误处理。
-
错误是什么?当您知道返回了什么错误时,您就会知道问题所在。
-
您是使用相对还是绝对文件路径加载文件?如果是相对的,它肯定会失败,因为进程的起始工作目录可能不是您在 IDE 中运行时所期望的。如果您还没有这样做,请始终在运行时使用绝对路径。
-
所以 stb_image 使用 fopen_s 作为加载文件的函数。它返回值为 2 的 ernno_t。这意味着没有这样的文件或目录。但是该文件存在,如果我在 VS 之外运行已编译的 exe,它可以打开。仅当我尝试在 Visual Studio 中运行程序时才会出现此问题。
-
这意味着没有这样的文件或目录。但是文件是存在的,调试的时候在你的调试器中查看图片文件的路径。可能由于某种原因路径已损坏。
标签: c++ visual-studio file-io