2

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

我的可执行文件在这里:MyProgram.app/Content/MacOS/MyProgram.exe

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

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

“../资源/something.png”

如果我打开 .app 包并直接运行 .exe,这将非常有用。

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

有谁了解我的问题以及我该如何解决?

4

4 回答 4

5
QApplication::applicationDirPath()

http://doc.qt.io/qt-5/qcoreapplication.html#applicationDirPath

于 2009-02-22T14:19:32.783 回答
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"); 也是如此。

于 2009-02-23T10:23:56.537 回答
0

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

于 2009-02-21T18:53:38.653 回答
0

捆绑编程指南

一切都有一本手册,似乎:)

于 2009-02-21T19:23:18.177 回答