【问题标题】:SFML Failed to load image from memory, no data providedSFML 无法从内存中加载图像,未提供数据
【发布时间】:2016-03-16 20:27:16
【问题描述】:

我在 VS2012 中使用 SFML 和 C++。在调试控制台中出现错误“无法从内存加载图像,未提供数据”和“无法创建纹理,无效大小 ”。

我的 main.cpp

#include <iostream>
#include "Test.h"
#include "resource.h"
#include <SFML/System.hpp>
#include <SFML/Window.hpp>
#include <SFML/Graphics.hpp>
#include <SFML/Audio.hpp>


using namespace std;

sf::Image LoadImageFromResource(const std::string& name)
{
    HRSRC rsrcData = FindResource(NULL, name.c_str(), RT_RCDATA);

    DWORD rsrcDataSize = SizeofResource(NULL, rsrcData);

    HGLOBAL grsrcData = LoadResource(NULL, rsrcData);

    LPVOID firstByte = LockResource(grsrcData);


    sf::Image image;
    image.loadFromMemory(firstByte, rsrcDataSize);


    return image;
}

int main()
{      
    sf::Image SpriteSheetWalkRes = LoadImageFromResource("IDB_PNG1");
    sf::Texture SpriteSheetWalk;
    SpriteSheetWalk.loadFromImage(SpriteSheetWalkRes);
}

我的资源.rc

#include "resource.h"

#define APSTUDIO_READONLY_SYMBOLS

#include "afxres.h"

#undef APSTUDIO_READONLY_SYMBOLS

#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_RUS)
LANGUAGE LANG_RUSSIAN, SUBLANG_DEFAULT

#ifdef APSTUDIO_INVOKED

1 TEXTINCLUDE 
BEGIN
    "resource.h\0"
END

2 TEXTINCLUDE 
BEGIN
    "#include ""afxres.h""\r\n"
    "\0"
END

3 TEXTINCLUDE 
BEGIN
    "\r\n"
    "\0"
END

#endif

IDB_PNG1            RCDATA           "F:\\(...)\\test_player.png"

#endif 

#ifndef APSTUDIO_INVOKED

#endif 

我的资源.h

#define IDB_PNG1                        101

#ifdef APSTUDIO_INVOKED
#ifndef APSTUDIO_READONLY_SYMBOLS
#define _APS_NEXT_RESOURCE_VALUE        102
#define _APS_NEXT_COMMAND_VALUE         40001
#define _APS_NEXT_CONTROL_VALUE         1001
#define _APS_NEXT_SYMED_VALUE           101
#endif
#endif

【问题讨论】:

  • 请提及导致问题的代码位置和错误详情。
  • 我不知道位置,我在调试控制台中有错误,但我认为这部分。 -------------------------------------------------- -sf::Image SpriteSheetWalkRes = LoadImageFromResource("IDB_PNG1");

标签: c++ visual-studio visual-studio-2012 visual-c++ sfml


【解决方案1】:

我建议使用资源编辑器或 dumpbin.exe 并检查您的资源是否链接到二进制文件中。

【讨论】:

猜你喜欢
  • 1970-01-01
  • 2013-12-10
  • 1970-01-01
  • 2012-04-21
  • 1970-01-01
  • 2019-07-03
  • 1970-01-01
  • 2012-07-10
  • 1970-01-01
相关资源
最近更新 更多