【问题标题】:Problems with SFML loadFromFile commandSFML loadFromFile 命令的问题
【发布时间】:2018-05-23 13:40:54
【问题描述】:

我正在尝试使用 SFML 2.0 获得棋盘的图形表示。问题是我根本无法加载纹理,命令 loadFromFile 不起作用,我不知道为什么。我已经在网上搜索过,也在 Stack Overflow 中,但我没有找到解决方案。

我现在做了什么:

  • 设置包含和库、.dll 和 .libs 的所有依赖项
  • 将文本格式从 unicode 更改为多字节。
  • 将 .dll 复制到工作文件夹中(出现错误,即使我在项目中链接了 dll,Visual Studio 也无法找到它们)
  • 使用图像文件的完整路径
  • 使用带 2 个参数的 LoadFile 命令(尽管我猜第二个是可选的)
  • 将运行时库从 MDd 更改为 MD(试图让它在发布模式下工作)
  • 不链接所有库,而只链接以 ....-d.lib 结尾的库(如另一个 Stack Overflow 线程中所假设的那样)

我使用的是 Windows 7,Visual Studio 版本 15.3.3

这是我的代码:

#include <SFML/Graphics.hpp>
#include <time.h>
#include <iostream>

int main() {

    sf::RenderWindow window(sf::VideoMode(437, 437), "MattseChess!");
        
    sf::Texture t1;
    if (!t1.loadFromFile("C:/Users/Mattse/source/repos/Chess/Chess/images/figures.png")) {    
        std::cout << "Error loading texture" << std::endl;        
    }

    return 0;
}

接下来我应该尝试什么?

【问题讨论】:

  • 你能打开一个ifstream 到那个文件吗? loadFromFile 方法失败时打印的消息是什么? ? trying to get it work in release mode, Not linking all libraries, but only the ones with a ....-d.lib ending... 对于调试版本,您需要链接调试库(即以 -d.lib 结尾的那个)。您确定对于调试/发布版本,链接了正确的库吗?

标签: c++ image sfml


【解决方案1】:

您应该始终使用相对路径 ("images/figures.png") 打开文件。它与可执行文件相对。

并检查其他 PNG 图像,看看它是否来自 SFML 因任何原因无法加载的图像(并尝试 gimp 使用不同的选项重新导出它,例如隔行扫描)

【讨论】:

    【解决方案2】:

    问题已解决,实际上是我忘记在链接器->输入设置中删除一个库。我现在只有以 -d 结尾的那些,即使是那些没有 -d 等价物的也被删除了。

    链接库列表:

    sfml-audio-d.lib
    sfml-graphics-d.lib
    sfml-main-d.lib
    sfml-network-d.lib
    sfml-network-s-d.lib
    sfml-system-d.lib
    sfml-system-s-d.lib
    sfml-window-d.lib
    sfml-window-s-d.lib
    

    【讨论】:

    • 如果这是您问题的解决方案,请将您的问题标记为已回答
    • Beinando:根据 alseether 的评论,您能接受这个答案吗?虽然这里不是严格强制性的,但它可能对未来的读者有所帮助(我们在这里都是关于未来的读者)。
    【解决方案3】:

    我猜(来自C:\Users\ 部分)您使用的是 Windows 系统。

    虽然 Windows应该支持斜杠作为路径分隔符,但 Windows 中的官方路径分隔符是 反斜杠。它需要在 C++ 中转义,所以你的完整路径是:

    "C:\\Users\\Mattse\\source\\repos\\Chess\\Chess\\images\\figures.png"
    

    【讨论】:

      猜你喜欢
      • 2023-03-30
      • 1970-01-01
      • 2015-12-02
      • 2014-02-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-04-08
      相关资源
      最近更新 更多