Rileva cartella eseguibile da SDL
-
20-08-2019 - |
Domanda
Sto creando un motore di gioco SDL C ++ ed è importante conoscere il percorso eseguibile poiché le immagini e le altre risorse non sono memorizzate all'interno dell'eseguibile - sono in una cartella separata (" res / ".)
In Linux, sto usando uno script di shell " rungame.sh " quel cd è sul percorso dell'eseguibile e quindi esegue l'eseguibile (usando quindi " ./ " per fare riferimento alla cartella degli eseguibili). Tuttavia, credo che questo sia un & Quot; brutto & Quot; approccio e voglio che sia compatibile con Windows.
Inoltre, l'approccio attuale non è molto buono in quanto potrebbe cambiare il significato di alcuni argomenti della riga di comando.
Voglio una soluzione multipiattaforma (* NIX, Windows e Mac OS X, se possibile) per ottenere il percorso corrente dell'eseguibile. Il percorso del gioco / il nome dell'eseguibile possono cambiare.
Qual è il modo più pulito per risolvere il mio problema (preferibilmente usando std :: string e il minor numero possibile di API dipendenti dalla piattaforma)?
Soluzione
Consiglio vivamente di cercare prima di pubblicare: Come si fa Ottengo la directory da cui è in esecuzione un programma?
Altri suggerimenti
Dalla SDL 2.0.1 c'è SDL_GetBasePath .
physicsfs ha PHYSFS_getBaseDir()
:
Ottieni il percorso in cui risiede l'applicazione.
Funzione di supporto.
Ottieni il " base dir " ;. Questa è la directory in cui si trovava l'applicazione eseguito da, che è probabilmente la directory di installazione, e può o può non essere l'attuale directory di lavoro del processo.
Probabilmente dovresti usare la directory base nel tuo percorso di ricerca.