从资源加载图像失败
Failure in loading image from resources
我在VS2012中将SFML与C++一起使用。我的程序有很多图像,但我一直在尝试从资源加载其中一些图像。我已经在projectname.rc中成功地实现了该文件,一切看起来都很好,但当我试图加载图像时,它会生成一个异常,它说:"无法从内存加载图像,没有提供数据"(这是来自sfml)。
这是我的主要.cpp:
#include <SFML/Graphics.hpp>
#include <SFML/Window.hpp>
#include <iostream>
#include <windows.h>
#include "resource.h"
sf::Image LoadImageFromResource(const std::string& name)
{
HRSRC rsrcData = FindResource(NULL, name.c_str(), RT_RCDATA);
if (!rsrcData)
throw std::runtime_error("Failed to find resource.");
DWORD rsrcDataSize = SizeofResource(NULL, rsrcData);
if (rsrcDataSize <= 0)
throw std::runtime_error("Size of resource is 0.");
HGLOBAL grsrcData = LoadResource(NULL, rsrcData);
if (!grsrcData)
throw std::runtime_error("Failed to load resource.");
LPVOID firstByte = LockResource(grsrcData);
if (!firstByte)
throw std::runtime_error("Failed to lock resource.");
sf::Image image;
if (!image.loadFromMemory(firstByte, rsrcDataSize))
throw std::runtime_error("Failed to load image from memory.");
return image;
}
int main()
{
sf::Image resource = LoadImageFromResource("IDB_BITMAP1");
// (...)
}
这是来自我的(projectname.rc)资源文件:
#include "resource.h"
#include "afxres.h"
//(. . .)
IDB_BITMAP1 BITMAP "C:\ (...) \sprite.bmp"
和我的资源。h:
#define IDB_BITMAP1 107
#ifdef APSTUDIO_INVOKED
#ifndef APSTUDIO_READONLY_SYMBOLS
#define _APS_NEXT_RESOURCE_VALUE 108
#define _APS_NEXT_COMMAND_VALUE 40003
#define _APS_NEXT_CONTROL_VALUE 1001
#define _APS_NEXT_SYMED_VALUE 101
#endif
#endif
问题是我在HRSRC请求RT_RCDATA类型,并试图传递BITMAP资源类型。我更改了
IDB_BITMAP1 BITMAP "C:\ (...) \sprite.bmp"
至:
IDB_BITMAP1 RCDATA "C:\ (...) \sprite.bmp"`
现在它运行良好。
相关文章:
- 如果没有malloc,链表实现将失败
- 模板参数替换失败,并且未完成隐式转换
- 具有默认模板参数的多态类的模板推导失败
- C++,OpenCV,尝试显示图像时"OpenCV(4.3.0) Error: Assertion failed (size.width>0 && size.height>0)"此错误
- 如何使用OpenCV将RBG图像转换为HSV,并将H、S和V值保存为C++中的3个独立图像
- OpenCV EqualizeHist()从彩色图像创建黑白图像
- 视图中的参数推导失败:take_while
- 将"打开的CV图像"中的"颜色"转换为整数格式
- 链接到自行创建的dll失败
- 带有特殊路径部分的"std::filesystem::weakly_canonical"失败
- GetShortPathName在网络驱动器上使用中文文件夹时失败
- 获取AIMAGE_FORMAT_JPEG的图像失败
- StretchDIBits仅在特定图像维度失败
- SFML图像加载在发布版本上失败 - 文件名损坏
- OpenCV,dlib - 函数中的图像类型转换失败;在外面工作
- 我正在尝试将灰度转换为更大的黑色图像.我得到这个错误OpenCV错误:断言失败
- CImg:图像二值化结果失败
- 从资源加载图像失败
- 使用鼠标单击在图像上绘制多条线失败
- 复制图像后,断言失败(大小>宽度0 &&&大小.高度>0)