【发布时间】: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结尾的那个)。您确定对于调试/发布版本,链接了正确的库吗?