2011-05-14 133 views
5

如果你曾經使用過這個工具,那就有點像這樣。我希望能夠將我的所有聲音,圖像和其他所有內容都嵌入到一個C++可執行文件中。 Game Maker會有一個內置的編輯器,並將圖像嵌入到.gmk文件中,當您打開它時,它會讀取圖像並將其顯示在遊戲中。我認爲他將圖像保存爲圖像,而不是保存在.gmk文件中的純數據,由編輯器解釋或由解釋器寫入.exe。我會如何去做類似的事情?如何將資源嵌入到單個可執行文件中?

回答

2

Windows資源系統是這樣工作的,所以如果你製作一個WinAPI或MFC應用程序,你可以使用它。而且,Qt提供了相同的功能,但是採用平臺獨立的方式。他們只是以原始二進制格式將文件寫入正常C++文件中的字節數組中,以便將它們作爲數據編譯到exe中。然後他們提供訪問這些數據塊的功能,如普通文件,儘管我不知道它們是如何工作的。可能是它們的文件類的特殊實現,它只是訪問這些字節數組變量。

+0

非常有趣恢復二進制形式。我想這只是另一個微軟的東西,比如directX或者WinAPI。功能非常有用,但不是跨平臺。但很高興看到QT具有類似的功能。 – Keelx 2011-05-15 03:44:27

+0

MSDN的使用資源(Windows):https://msdn.microsoft.com/en-us/library/ms648008(v=VS.85).aspx – Andrew 2017-01-28 05:16:13

1

僅用於圖像,一個非常簡單的方法是使用XPM格式。

此格式是一個有效的C/C++頭文件,因此您可以將其直接包含到C++源文件中並直接使用它。

這種方法的主要問題是XPM不是壓縮格式,因此使用了大量存儲空間。 因此,實際上我只看到它用於圖標和小圖形對象,但原則上你可以做更多。

關於XPM的另一件很酷的事情是,它是人類可讀的 - 對於設計小而簡單的圖標來說也很棒。

爲了推廣這一理念爲其它格式,你可以做的是創造一個編譯鏈是:

  1. 編碼上述目標文件作爲ASCII(的Uuencode或如)
  2. 打開該成一個單一命名C源文件中的字符串。
  3. 創建標題只是聲明名稱
  4. 定義一個函數從字符串
相關問題