Per favore perdonami se c'è una risposta lampante a questa domanda; Non l'ho trovato perché non sono completamente sicuro di quello che sto cercando. Potrebbe essere questo duplica una domanda che non ho trovato; scusa.C - Memorizzazione di un grande gruppo di file come risorsa singola
Ho un eseguibile C che utilizza testo, audio, video, icone e una varietà di diversi tipi di file. Questi file sono memorizzati localmente; la struttura delle cartelle è ampia e profonda e dovrebbe essere installata insieme all'applicazione per funzionare correttamente (non che io prevedo che sia distribuita, sto cercando di impacchettare il mio lavoro per comodità).
A mio parere sarebbe più conveniente se la libreria di file fosse archiviata in un singolo file che rimanesse accessibile all'applicazione ad esempio a fianco di /usr/bin/APPLICATION
o nella posizione più appropriata; accesso all'eseguibile quando richiesto.
Ho cercato per domande simili e trovato suggerimenti che indicavano due possibili opzioni Resource Files che sembrano essere nativo di Windows e Including files at compile. La prima domanda porta a una risposta simile alla seconda e non risponde alla domanda relativa all'esistenza di file di risorse per gli eseguibili di Linux. Questo (come il secondo) esamina l'inserimento del file di dati nel processo di compilazione. Non è così utile come se volessi aggiornare le mie risorse. Sono costretto a ricompilare l'intera applicazione (il supporto è aggiunto dinamicamente).
DOMANDA: C'è un modo per archiviare una varietà di tipi di file in un singolo file accessibile a un eseguibile in linux e, in caso affermativo, come lo implementeresti?
Il mio pensiero su questo inizialmente era quello di creare un file .zip
o .gz
che potrebbero anche offrire compressione come un ulteriore bonus, ma non ho idea di come (o se è ancora possibile) per accedere ai dati all'interno di tale file sul volare. Sono ugualmente incerto se esiste un tipo di file o una libreria specifici che offre una soluzione più adatta. Inoltre, non so praticamente nulla dei file .dat
che potrebbero essere utilizzati in questo contesto su un sistema Linux?
'file .dat' può significare qualsiasi cosa; Non conosco un formato di file '.dat' standard. '.zip' sembra una buona scelta (java lo usa per i vasi); guarda in 'libzip'. –
Apparentemente Zip può facilmente estrarre solo il file che si desidera, ma non tar/gz. Vedere http://gamedev.stackexchange.com/questions/37648/how-can-you-put-all-images-from-a-game-to-1-file –
è possibile memorizzare tutti i nomi dei file in un unico file di testo, (con sezioni per ogni tipo di file, o forse un file di testo per ogni tipo di file) che è/sono analizzato dal programma. Quindi non è necessario continuare a ricompilare la fonte, dove probabilmente si codificano i nomi dei file delle risorse. "File di risorse" è un termine solitamente associato alla compilazione, come la definizione di icone, cursori e finestre di dialogo, piuttosto che i dati da elaborare. –