如何在代码中引用Resources文件夹

时间:2009-02-21 18:48:14

标签: c++ macos qt bundle

我正在将一个c ++ Qt应用程序从Windows移植到OSX,无法绕过.app包概念。我希望有人能帮助我理解。

我的可执行文件存在于此处:MyProgram.app/Content/MacOS/MyProgram.exe

我的资源文件夹位于此处:MyProgram.app/Content/Resources /

在我的代码中,我使用相对路径来引用资源文件夹中的项目:

“../资源/ something.png”

如果我打开.app包并直接运行.exe,这很有效。

但这不是.app包的工作方式。用户应该在Finder中单击.app包以运行该程序。但在那种情况下,我的相对路径不再有效,这就是我不明白的地方。

有没有人了解我的问题以及如何解决它?

4 个答案:

答案 0 :(得分:5)

答案 1 :(得分: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 :: bundle()。filePath(“../Resources”);

答案 2 :(得分:0)

编译产品时,是否尝试将Resources的路径设置为相对路径?否则,您可以检索主包,其应用程序的URL并将其附加到资源URL。

答案 3 :(得分:0)

Bundle Programming Guide

有一本手册,似乎:)