【问题标题】:Loading File works in compiled exe but not when run inside visual studio加载文件在编译的 exe 中有效,但在 Visual Studio 中运行时无效
【发布时间】: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


【解决方案1】:

在加载函数中使用绝对路径解决了这个问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-16
    • 1970-01-01
    • 1970-01-01
    • 2020-03-24
    • 2011-03-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多