You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Visual Studio 2019下SFML调用loadFromFile加载图片提示无法打开文件怎么办

问题原因

报错核心为程序运行时无法在当前工作目录下找到enemy.png文件,与SFML配置无关联,具体诱因如下:

  • Visual Studio调试运行时的默认工作目录与main.cpp所在的源文件目录不一致;若直接双击运行生成的exe文件,此时工作目录为exe所在的文件夹,也与源文件目录不匹配
  • Windows系统默认隐藏已知文件扩展名,图片实际文件名为enemy.png.png,代码中填写的路径与实际文件名不匹配
  • 图片文件被其他程序占用、当前账号无该文件的读取权限

解决方法

方案1:统一文件存放路径(最推荐)

将enemy.png放到程序运行时的工作目录下即可:

  • 若在Visual Studio内点击调试按钮运行:VS默认工作目录为.vcxproj项目文件所在的目录,对应你场景的路径为D:\XXX\XXX\Project1\Project1\,将图片放入该目录即可
  • 若直接双击生成的exe运行:将图片放入和Project1.exe同目录的D:\XXX\XXX\Project1\x64\Debug\路径下即可

方案2:修改Visual Studio调试工作目录

无需重复复制图片的配置方法:

  1. 右键项目名称->属性->调试
  2. 找到「工作目录」配置项,修改为你存放enemy.png的目录(比如main.cpp所在的源文件目录)
  3. 配置完成后仅需在该目录下存放一份图片,调试运行时即可正常读取

方案3:使用绝对路径(临时调试用)

可填写完整绝对路径验证文件本身是否可正常读取,示例:

if (!texture.loadFromFile("D:/XXX/XXX/Project1/Project1/enemy.png"))

注意路径分隔符需使用/或者转义后的\\,不可直接使用单个\。

附加排查项

若以上操作后仍报错,可打开资源管理器的「查看」选项卡,勾选「文件扩展名」,确认图片文件的实际名称确实为enemy.png而非enemy.png.png。

额外说明:你构建输出中的两个警告是因为sf::VideoMode要求传入无符号整数参数,你定义的windowHeight和windowWidth为float类型,将两个变量的类型改为unsigned int即可消除警告。


内容的提问来源于stack exchange,提问作者user16208301

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 22:57:03