簡體   English   中英

將文件夾“嵌入”到C / C ++程序中

[英]“Embedding” a folder into a C/C++ program

我有一個存儲在.../lib/中的腳本庫,我希望將其嵌入到我的程序中。 到目前為止,這聽起來很簡單:在Windows上,我使用Windows資源文件 - 在MacOS上,我將它們放入Resource文件夾並使用適當的API來訪問當前的bundle及其資源。 在普通的Linux上,我不太清楚如何做到這一點......但是,無論如何,我想成為跨平台的。

現在,我知道有像IncBin( https://github.com/graphitemaster/incbin )這樣的工具,但它們最適合用於單個文件。 但是,我所擁有的甚至可能需要某種文件系統抽象。

所以這里是我做過的幾個猜測和估計。 我想知道是否有更好的解決方案 - 或者其他方面。

  • 創建一個Zip文件並使用MiniZ從char數組中讀取它的內容。 基本上,通過IncBin運行zip文件並將其作為緩沖區傳遞給MiniZ,讓我來處理它。
  • 使用抽象的FS層,如PhysicsFS或TTVFS,並添加處理Zip文件或任何其他類型的存檔的可能性。

還有其他解決方案嗎? 謝謝!

我有同樣的問題,我通過找到相對於argv [0]的庫來解決它。 但這只有在你通過絕對路徑調用程序時才有效 - 即,不是通過shell中的$ PATH。 所以我通過〜/ bin中的單行腳本或搜索路徑中的任何其他目錄來調用我的程序:

exec / wherever / bin / program“$ @”

當程序運行時,argv [0]被設置為“/ wherever / bin / program”,並且它知道在“/ wherever / lib”中查找相關腳本。

當然,如果您直接安裝到標准位置,您可以依賴標准目錄結構,例如/ usr / local / bin / program用於可執行文件,/ etc / program用於相關腳本和配置文件。 上面的技術就是您希望能夠在任意位置安裝整個捆綁包的時候。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM