我试图用SFML 2.0获得棋盘的图形表示。 问题是我根本无法加载纹理,命令loadFromFile不起作用,我不知道为什么。我已经用谷歌搜索了大约2个小时,也在stackoverflow中,但我没有找到解决方案。
我现在做了什么:
我使用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;
}
我没有更多想法可以尝试,我希望你能帮助我。提前谢谢!
答案 0 :(得分:0)
您应始终打开具有相对路径(/usr/local/etc/rc.d/<myappname>
)的文件。它是可执行文件的亲戚。
并检查其他"images/figures.png"
图像,看看它是否来自SFML因任何原因无法加载的图像(并尝试使用不同的选项重新导出gimp,例如隔行扫描)
答案 1 :(得分:0)
问题已解决,事实上我忘记在链接器 - >输入设置中删除一个库。我现在只有-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
谢谢你的帮助!
答案 2 :(得分:0)
我猜测(来自C:\Users\
部分)你在Windows系统上。
虽然Windows 应该支持斜杠作为路径分隔符,但Windows中的官方路径分隔符是反斜杠。它需要在C ++中进行转义,因此您的完整路径将是:
"C:\\Users\\Mattse\\source\\repos\\Chess\\Chess\\images\\figures.png"