SFML loadFromFile 命令的问题

Problems with SFML loadFromFile command

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

我现在做了什么:

我用的是Windows7,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;
}

接下来我要尝试什么?

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

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

问题已解决,实际上是我忘记在链接器->输入设置中删除一个库。我现在只有那些以 -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

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

虽然Windows应该支持斜杠作为路径分隔符,但Windows中的官方路径分隔符是反斜杠.它需要在 C++ 中进行转义,因此您的完整路径为:

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