2017-02-05 19 views
1

私は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。

私はそれをデバッグしようとしましたが、できませんでした。私はこの問題に対する答えを見つけることができません。

+0

:に

HRSRC rsrcData = FindResource(NULL, name, RT_RCDATA); 

SFMLの "testTexture.loadFromFile"メソッド? –

+0

dllファイルからロードしたいので – Caseofgames

+0

ああ、ありがとう。あなたが正しいです。私は家でそれをチェックした。 Unfortunatelly私は他のいくつかのシステムエラーがあるので、私は助けることができません。 –

答えて

0

私がこの行を変更しなければならなかった:私はなぜあなたが使用していない自宅でそれをチェックしますが...う

HRSRC rsrcData = FindResource(NULL, MAKEINTRESOURCE(name), RT_RCDATA); 
+0

しかし、今私は白いイメージを取得しています。 – Caseofgames

関連する問題