【发布时间】: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