2012-12-27 55 views
1

我正在關注的SFML入門指南2版本和代碼塊,並做了一切的教程告訴我做:建立SFML

  • 下載並解壓的SDK

  • 添加路徑到SFML頭文件和庫

  • 鏈接的庫的圖形,窗口和系統

但示例代碼不起作用。我收到sfml-graphics-d-2.dll丟失的錯誤消息。編譯工作,窗口打開,但仍然是黑色的,這個錯誤彈出。 這裏是教程的鏈接 http://www.sfml-dev.org/tutorials/2.0/start-cb.php

由於我是新的c + +和代碼塊,我將不勝感激的一個詳細的答案。

更新: 我已將SFML dll複製到可執行文件。現在我的程序崩潰了。我不知道爲什麼。它與本教程中使用的代碼完全相同。

更新: 我已將鏈接庫更改爲-s版本並添加了#define SFML_STATIC。該程序仍然建立,然後崩潰

+0

你把DLL放在可執行文件的位置嗎? – Rapptz

回答

2

如果您使用的是包含GCC 4.7.1的最新Code :: Blocks版本,那麼您必須自行重新編譯SFML(或使用我的Nightly Builds),因爲所提供的僅適用於GCC版本< 4.7。 X。

+1

作品,謝謝你的出色答案 – lhk

2

看來你並沒有建立你的靜態庫建立在項目內,而是使用您的SFML動態鏈接。 SFML幾個月前建立的時候我也有類似的問題,還記得這句話:

這裏顯示會導致你的申請被鏈接到SFML,需要的DLL文件中的一個動態版本的設置。如果您想擺脫這些DLL並將SFML直接集成到您的可執行文件中,則必須鏈接到靜態版本。靜態SFML庫具有「-s」後綴:「sfml-xxx-s-d」用於調試,「sfml-xxx-s」用於發佈。 在這種情況下,您還需要在項目的預處理器選項中定義SFML_STATIC宏。

確保你在項目中包含的靜態文件

sfml-graphics-s-d //for debug 
sfml-window-s-d //d for debug! 
sfml-system-s-d 

發佈,忽略d(SFML圖形-S)

下一頁去編譯器設置 - >#Defines and type

SFML_STATIC 
+0

您必須將's-d'更改爲's'才能發佈。 – Mario

+0

哎呦,謝謝你的收穫。修正了 –

+0

那個不行的 – lhk