SFML loadFromFile命令的问题

Problems with SFML loadFromFile command

本文关键字:问题 命令 loadFromFile SFML      更新时间:2023-10-16

我试图获得具有SFML 2.0的棋盘的图形表示。问题是我根本无法加载纹理,命令loadFromFile不起作用,我不知道为什么。我已经在堆栈溢出中搜索了网络,但没有找到解决方案。

我现在所做的:

  • 设置所有依赖项,用于include和库,.dll和.libs
  • 将文本格式从Unicode更改为多键。
  • 将.dll复制到工作文件夹中(即使我在项目中链接了它们,Visual Studio都找不到DLL的错误)
  • 使用图像文件的整个路径
  • 使用带有2个参数的LoadFile-Command(即使第二个是可选的,我猜)
  • 将运行时库从MDD更改为MD(试图在发行模式下使其工作)
  • 不是链接所有库,而只有一个....- d.lib结束的库(如另一个堆栈溢出线程中所谓)

我使用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;
}

接下来我要尝试什么?

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

并与其他PNG图像一起检查它是否不是来自SFML无法加载的图像(并尝试使用GIMP重新将其重新输入,例如与隔板(例如Interlaceing)重新删除它)

我猜(从C:Users部分)您在Windows系统上。

虽然Windows 应该支持斜线作为路径分离器,但Windows中的官方路径分离器是 Backslash 。它需要在C 中逃脱,因此您的完整路径是:

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

问题已解决,实际上,我忘了删除链接器 - &gt;输入设置中的一个库。我现在只有一个结尾,即使是没有-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