2013-11-26 62 views
1

下面的代碼給了我未捕獲的異常(特別是SFML(32位VS12) - SFML.exe中0x701ADEF8(msvcr110.dll)的未處理異常:0xC0000005:訪問衝突讀取位置0x0526。 LoadFromFile

txtr.loadFromFile("C:/Users/kidz/Documents/Visual Studio 2012/Projects/SFML/Debug/chessboard.gif"); 

): 「在0x701ADEF8(msvcr110.dll)在SFML.exe未處理的異常:0000005:訪問衝突讀取位置0x05260000。」

int _tmain(int argc, wchar_t* argv[]) { 
    sf::RenderWindow window(sf::VideoMode(512, 512), "ChessPlusPlus", sf::Style::Close); 
    sf::Sprite chessboard; 
    sf::Texture txtr; 

    txtr.loadFromFile("C:/Users/kidz/Documents/Visual Studio 2012/Projects/SFML/Debug/chessboard.gif"); 
    chessboard.setTexture(txtr); 

    while (window.isOpen()) { 
     sf::Event event; 
     while (window.pollEvent(event)) { 
      if (event.type == sf::Event::Closed) { 
       window.close(); 
      } 
     } 

     window.clear(); 
     window.draw(chessboard); 
     window.display(); 
    } 

    getwchar(); 
    return 0; 
} 

         此外,該程序的調試過程中,一串隨機ASCII字符得到輸出到控制檯(有時甚至是個人文件,如散文,等...)。然後,控制檯變爲空白(空字符),並拋出異常。

         有一次,我才得以暫停程序,並滾動一路攀升它說的一樣:「無法打開文件‘chessboard.gif(用字某些隨機的ASCII字符)’ 「然後是長長的ASCII字符列表。

         是不是有什麼毛病SFML還是我做錯了什麼?我知道SFML文檔說,有時文件可能不會加載並拋出異常,但在這種情況下,它會變得瘋狂。此外,我已經隨機放置了一個不存在的文件名,並且仍然發生了相同的事情,而不是拋出文件未找到異常。

         我曾嘗試在奧威爾開發-C相同的代碼++,它只是返回一個白色框,圖像應該是返回一個異常時,該文件不存在。

一些照片:
http://i.stack.imgur.com/gq420.png
http://i.stack.imgur.com/Os8jw.png

         我會很樂意提供任何額外的信息。

謝謝
    Usandfriends!

+0

嗯,不知道這會有所幫助,但這裏是我額外的依賴(項目選項 - >配置屬性 - >接頭 - >輸入 - >附加依賴):SFML-main.lib,SFML-audio.lib,sfml- graphics.lib,sfml-network.lib,sfml-system.lib,sfml-window.lib。此外,不知道這是否有幫助,但我的可執行文件路徑中的DLL是:libsndfile-1.dll,openal32.dll,sfml-audio-2.dll,sfml-graphics-2.dll,sfml-network-2.dll ,sfml-system-2.dll,sfml-window-2.dll。 – usandfriends

回答

4

當您將調試庫與發佈模式或發佈庫混合使用調試模式時,會出現此問題。確保在調試模式下僅使用-d後綴SFML庫,並且在發佈模式下僅使用後綴SFML庫 - 如official tutorial中所述。

作爲一個側面說明,它也建議總是使用int main()。如果您只想要一個沒有命令提示符的窗口,那麼您可以將子系統更改爲窗口並鏈接到sfml-main

相關問題