2

c++ Qt アプリケーションを Windows から OSX に移植していますが、.app バンドルの概念について理解できません。誰かが私を理解するのを手伝ってくれることを願っています。

私の実行ファイルはここにあります: MyProgram.app/Content/MacOS/MyProgram.exe

私のリソース フォルダーは次の場所にあります: MyProgram.app/Content/Resources/

私のコードでは、相対パスを使用してリソース フォルダー内の項目を参照しています。

「../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

バンドル プログラミング ガイド

すべてのマニュアルがあるようです:)

于 2009-02-21T19:23:18.177 に答える
0

製品をコンパイルするときに、 のパスをResources相対パスに設定しようとしましたか? それ以外の場合は、メイン バンドルとそのア​​プリの URL を取得し、それを Resources URL に追加できます。

于 2009-02-21T18:53:38.653 に答える