私はSFML 2.4とVisual Studio Community 2015を使用しています。 リソースからイメージをロードする際に問題があり、何も見つかりません。ここで が私のコードです:SFML 2.4でリソースを読み込めません
#include <SFML\Graphics.hpp>
#include <SFML\System.hpp>
#include <Windows.h>
sf::Sprite m_Test;
sf::Image LoadImageFromResource(LPCWSTR name)
{
HRSRC rsrcData = FindResource(NULL, name, RT_RCDATA);
if (!rsrcData)
throw std::runtime_error("Failed to find resource.");
DWORD rsrcDataSize = SizeofResource(NULL, rsrcData);
if (rsrcDataSize <= 0) {
MessageBox(NULL, L"Size of resource is 0.", L"ERROR", MB_OK);
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;
}
void init() {
sf::Image testImage = LoadImageFromResource(L"test");
sf::Texture testTexture;
if (!testTexture.loadFromImage(testImage)) {
throw std::runtime_error("Failed to load image.");
}
sf::Sprite test;
test.setTexture(testTexture);
m_Test = test;
}
int WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int) {
sf::RenderWindow window(sf::VideoMode(1280, 720), "The Principle of Battle");
init();
while (window.isOpen()) {
sf::Event event;
while (window.pollEvent(event)) {
if (event.type == sf::Event::Closed) {
window.close();
}
}
window.clear(sf::Color::Black);
window.draw(m_Test);
window.display();
}
}
私はこのコードを実行すると、出力はこれを言う:Battle.exeの原則に0x00007FFF47BE7788で投げ
例外:マイクロソフトC++の例外:メモリでのstd :: runtime_error場所0x0000009C0C96EE18。
私はそれをデバッグしようとしましたが、できませんでした。私はこの問題に対する答えを見つけることができません。
:に
SFMLの "testTexture.loadFromFile"メソッド? –
dllファイルからロードしたいので – Caseofgames
ああ、ありがとう。あなたが正しいです。私は家でそれをチェックした。 Unfortunatelly私は他のいくつかのシステムエラーがあるので、私は助けることができません。 –