2009-02-21 57 views
2

我將一個C++ Qt應用程序從Windows移植到OSX,無法將我的頭包裝在.app包概念中。我希望有人能幫助我理解。如何在代碼中引用Resources文件夾

我的可執行住在這裏:MyProgram.app/Content/MacOS/MyProgram.exe

我的資源文件夾住在這裏:MyProgram.app/Content/Resources/

在我的代碼使用相對路徑引用在資源文件夾中的項目:

「../Resources/something.png」

,如果我打開。應用程序包和直接運行.exe這個偉大的工程。

但是,這不是如何.APP包的工作。用戶應該點擊Finder中的.app軟件包來運行該程序。但在這種情況下,我的相對路徑不再有效,這是我不明白的。

有沒有人瞭解我的問題,我如何解決它?

+0

這個http://stackoverflow.com/questions/516200/relative-paths-not-working-in-xcode-c的答案應該爲你做。 – 2009-02-21 18:53:46

+0

謝謝,這個伎倆。 – JimDaniel 2009-02-21 19:47:34

回答

0

當你編譯你的產品時,你試過的設置Resources的路徑是相對的嗎?否則,您可以檢索主包,其應用程序的URL並將其附加到資源URL。

0

Bundle Programming Guide

有適用於所有的手冊,似乎:)

+0

不幸的是,你的鏈接已經死了,我在apple.com上找不到這個標題的頁面。 – Tobias 2014-04-23 10:43:20

3

我們使用:

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 ::束()。 filePath(「../Resources」);

相關問題