C++ SFML 加载图像失败,原因:无法打开文件

问题描述 投票:0回答:3

我正在尝试使用 SFML 库在 C++ 中显示一个空窗口。但是,当我使用 loadFromFile 加载图像时,它给了我一个错误。

无法加载图片“enemy.png”。原因:无法打开文件

图像“enemy.png”位于源文件目录(使用 Visual Studio 2019)以及 main.cpp 文件中。我已下载 SFML x64 位文件并通过项目属性使用动态链接。我尝试删除加载图像部分,并成功加载窗口。但这不太好,因为如果我下次需要加载图片,它就不起作用了。

这是代码:

#include <SFML/Graphics.hpp>

int main() {
    float windowHeight = 400;
    float windowWidth = 400;

    sf::RenderWindow window(sf::VideoMode(windowWidth, windowHeight), "Rougelike");
    
    sf::Texture texture;
    if (!texture.loadFromFile("enemy.png")) {
        return 0;
    }
    sf::Sprite sprite;
    sprite.setTexture(texture);

    while (window.isOpen()) {
        sf::Event event;
        while (window.pollEvent(event)) {
            if (event.type == sf::Event::Closed) {
                window.close();
            }
        }

        window.clear();
        window.draw(sprite);
        window.display();
    }
}

运行代码后,这是我从输出中得到的:

构建开始...
1>------ 构建开始:项目:Project1,配置:调试 x64 ------
1>主.cpp
1>D:\XXX\XXX\Project1\Project1\main.cpp(7,56): 警告 C4244: 'argument': 从 'float' 到 'unsigned int' 的转换,可能会丢失数据
1>D:\XXX\XXX\Project1\Project1\main.cpp(7,43): 警告 C4244: 'argument': 从 'float' 到 'unsigned int' 的转换,可能会丢失数据
1>Project1.vcxproj -> D:\XXX\XXX\Project1\x64\Debug\Project1.exe
1>完成构建项目“Project1.vcxproj”。
========== 构建:1 成功,0 失败,0 最新,0 跳过 ==========

这是我从命令提示符中得到的信息:

无法加载图片“enemy.png”。原因:无法打开文件
D:\XXX\XXX\Project1\x64\Debug\Project1.exe(进程 19768)退出,代码为 0。
按任意键关闭该窗口。 。 .

谢谢。

c++ sfml
3个回答
2
投票

您没有指定

png
文件的路径,因此使用“当前工作目录”。这是不可靠的,因为 Visual Studio 可能使用项目文件夹或其他东西。您还可以在 Progect 的属性中更改它。

对于 Windows,我建议将您的资源保存在与包含可执行文件的文件夹相对的路径中。然后,您始终可以在运行时使用 GetModuleFileName 获取 that 路径。


1
投票

我也有同样的问题。我将图像放置在我的项目的

root
中,但它不起作用。然后我在windows的资源管理器中搜索该文件,并像
C:\Users\myname\project\graphics\yourimage.png
一样复制完整路径,然后就成功了。


0
投票

我也遇到了同样的错误,并且 VS 设置有问题。即,将库 (.lib) 连接到项目。在链接器»输入»附加依赖项中,您需要连接类型为“sfml-xxx-d.lib”的文件用于调试配置,以及“sfml-xxx.lib”用于发布。这是写在 SFML 文档中:https://www.sfml-dev.org/tutorials/2.6/start-vc.php 希望对你有帮助(u2060◔u2060‿u2060◔u2060)

© www.soinside.com 2019 - 2024. All rights reserved.