Domanda

Sono porting di un C ++ Qt applicazioni da Windows a OS X e non posso avvolgere la mia testa intorno al concetto .app fascio. Spero che qualcuno possa aiutarmi a capire.

Il mio eseguibile vive qui: MyProgram.app/Content/MacOS/MyProgram.exe

La mia cartella delle risorse vive qui: MyProgram.app/Content/Resources /

Nel mio codice io uso un percorso relativo per fare riferimento elementi nella cartella delle risorse:

"../ Risorse / something.png"

Questa grande opera se apro il pacchetto .app e eseguire direttamente il file exe.

Ma questo non è il modo il fascio .app è destinato a lavorare. L'utente dovrebbe cliccare sul fascio .app nel Finder per eseguire il programma. Ma in questo caso il mio percorso relativo non funziona più, e questo è quello che non capisco.

Qualcuno capire il mio problema e come posso risolvere il problema?

È stato utile?

Soluzione

Altri suggerimenti

Usiamo:

QDir
CoreDir::bundle()
{
    // Trolltech provided example
    CFURLRef appUrlRef = CFBundleCopyBundleURL( CFBundleGetMainBundle() );
    CFStringRef macPath = CFURLCopyFileSystemPath( appUrlRef, kCFURLPOSIXPathStyle );
    QString path = CFStringToQString( macPath );
    CFRelease(appUrlRef);
    CFRelease(macPath);
    return QDir( path );
}

Quindi, fare CoreDir :: fascio () filePath ( ""); ../Resources.

Quando si compila il vostro prodotto, hanno provato la vostra impostazione del percorso di Resources di essere parente? In caso contrario, è possibile recuperare il fascio principale, l'URL dell'app stessa e aggiungerlo all'URL Risorse.

Bundle Guida alla programmazione

C'è un manuale per ogni cosa, a quanto pare:)

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