Pregunta

Estoy portar una aplicación Qt C ++ de Windows a OSX y no puedo envolver mi cabeza en torno al concepto .app paquete. Espero que alguien pueda ayudarme a entender.

Mi ejecutable vive aquí: MyProgram.app/Content/MacOS/MyProgram.exe

Mi carpeta de recursos vive aquí: MyProgram.app/Content/Resources /

En mi código que utilizo una ruta relativa para hacer referencia a elementos de la carpeta de recursos:

"../ Recursos / something.png"

Esto funciona muy bien si abro el paquete .app y ejecutar el .exe directamente.

Pero no es así como el paquete de .app está destinado a trabajar. El usuario se supone que haga clic en el paquete .app en el Finder para ejecutar el programa. Pero en ese caso mi ruta relativa ya no funciona, y esto es lo que no entiendo.

¿Alguien entiende mi problema y cómo puedo solucionarlo?

¿Fue útil?

Solución

Otros consejos

Nosotros usamos:

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 );
}

Lo mismo ocurre con CoreDir :: paquete () rutaArchivo ( ""); ../Resources.

Al compilar su producto, han intentado fijar el camino de la Resources que es relativa? De lo contrario, puede recuperar el haz principal, la URL de la aplicación de la misma y lo añadirá a la URL de Recursos.

Guía de programación

Bundle

Hay un manual para todo, lo que parece:)

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top