2009-02-21 64 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”);

相关问题