2009-11-01 149 views
5

我正在尋找一種將文本文件嵌入到我的二進制文件(如Windows資源系統)中的方法。我需要的東西也獨立於平臺(在Windows和Linux中工作)。我發現Qt資源管理是我需要的,但是我並不熱衷於依賴於Qt的應用程序。我也發現這個工具在http://www.taniwha.com/~paul/res/ ..但它太平臺特定。獨立於平臺的資源管理

+0

[使用GCC在可執行文件中嵌入資源](https://stackoverflow.com/questions/4158900/embedding-resources-in-executable-using-gcc) – user

回答

1

如果你使用的是QT 4.5,你可以確保程序只依賴於一小塊QT,比如libqtcore。 QResource是libqtcore的一部分。

0

這不是一個好主意。例如,在Linux上,數據需要安裝在「$ datadir」的子目錄中,默認情況下,該子目錄定義爲「$ prefix/share」,其中「$ prefix」是安裝前綴。在Mac OS X上,資源預計將安裝在$ appbundle/Contents/Resources中,其中$ appbundle是以「.app」結尾的文件夾的名稱。在Windows上,將數據安裝到可執行文件的兄弟文件夾中並不罕見。您最好使用CMake構建系統,並使用其CPack打包功能以默認,首選平臺特定的方式進行安裝/打包。

雖然捆綁你的資源到可執行文件本身可能看起來很酷,它實際上是一個危險的想法......例如,將嵌入的數據在可執行頁面分配呢?如果您嘗試覆蓋或修改數據會發生什麼?如果你想在運行時調整或修改數據呢?需要考慮的事情。

3

xxd實用程序可用於創建一個C源文件,其中包含二進制blob數組(使用-i命令行選項)。您可以將其編譯爲鏈接到可執行文件的對象。

xxd應該可以移植到大多數平臺上。

+0

你的意思是'xxd -i'? – ephemient

+0

啊,是的,你是對的。 – caf

0

你可以將simlpy附加到你的普通二進制數據的各種數據。適用於Windows和Linux。你將不得不在運行時打開你自己的二進制文件,並從那裏讀取數據。

但是,我不得不同意將數據嵌入二進制文件是一個奇怪的想法。通常的做法是將這些數據作爲與應用程序一起打包的單獨文件。