Как ссылаться на папку ресурсов в коде - PullRequest
2 голосов
/ 21 февраля 2009

Я портирую приложение c ++ Qt из Windows на OSX и не могу понять, как работает пакет .app. Я надеюсь, что кто-то может помочь мне понять.

Мой исполняемый файл живет здесь: MyProgram.app/Content/MacOS/MyProgram.exe

Моя папка ресурсов находится здесь: MyProgram.app/Content/Resources/

В моем коде я использую относительный путь к ссылочным элементам в папке ресурсов:

"../ Ресурсы / something.png"

Это прекрасно работает, если я открываю пакет .app и запускаю .exe напрямую.

Но это не то, как должен работать комплект .app. Пользователь должен нажать на пакет .app в Finder, чтобы запустить программу. Но в этом случае мой относительный путь больше не работает, и это то, что я не понимаю.

Кто-нибудь понимает мою проблему и как я могу ее исправить?

Ответы [ 4 ]

5 голосов
/ 22 февраля 2009
3 голосов
/ 23 февраля 2009

Мы используем:

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

То же самое делают CoreDir :: bundle (). FilePath ("../Resources");

0 голосов
/ 21 февраля 2009

Руководство по программированию Bundle

Кажется, есть руководство для всего:)

0 голосов
/ 21 февраля 2009

Когда вы компилируете свой продукт, вы пытались установить относительный путь Resources? В противном случае вы можете получить основной пакет, URL-адрес его приложения и добавить его к URL-адресу ресурсов.

...