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)?

È stato utile?

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.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top