2

Qt 5.1 を使用して Mac で簡単な Qt アプリを作成します。macdeployqt を使用して展開しますが、他の Mac で実行すると。

アプリでotool -Lを実行すると、

/Users/aratn0n/Qt//5.1.0/clang_64/lib/QtWidgets.framework/Versions/5/QtWidgets (compatibility version 5.1.0, current version 5.1.0)
    /Users/aratn0n/Qt//5.1.0/clang_64/lib/QtGui.framework/Versions/5/QtGui (compatibility version 5.1.0, current version 5.1.0)
    /Users/aratn0n/Qt//5.1.0/clang_64/lib/QtCore.framework/Versions/5/QtCore (compatibility version 5.1.0, current version 5.1.0)
    /System/Library/Frameworks/OpenGL.framework/Versions/A/OpenGL (compatibility version 1.0.0, current version 1.0.0)
    /System/Library/Frameworks/AGL.framework/Versions/A/AGL (compatibility version 1.0.0, current version 1.0.0)
    /usr/lib/libstdc++.6.dylib (compatibility version 7.0.0, current version 56.0.0)
    /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 169.3.0)

私のマシンのライブラリを使用しているように見えるので、他のマシンで実行すると、アプリバンドル内の Frameworks フォルダーにある Qt ライブラリを使用できません。

どうすれば修正できますか?

4

4 に答える 4

1

macdeployqtユーザー kimbaudi の回答に記載されているように、5.1.0 で正常に動作しなくなるのは、Qt のインストールのバグです。

5.1.1 で修正されました。

何らかの理由で 5.1.0 を使用する必要がある場合は、実行するmacdeployqtと、Qt フレームワークがバンドルにコピーされていることがわかります。

cd次に、バンドル内の Frameworks ディレクトリに移動し、次の形式のコマンドを使用してリンク パスを書き換える必要があります。

install_name_tool -change /Users/username/Source/Qt5//5.1.0/clang_64/lib/QtGui.framework/Versions/5/QtGui @executable_path/../Frameworks/QtGui.framework/Versions/5/QtGui QtCore

すべての Qt フレームワークで相互の依存関係を書き換えるため、また PlugIns ディレクトリ内のすべての dylib と実行可能ファイルを書き換える必要があります。

于 2013-08-28T23:40:53.567 に答える
1

macdeployqt はその役割を果たしていないようです。

必要な Qt ライブラリをアプリ バンドルにコピーし、パスを設定する必要があります。

失敗した理由を調べるか、自分でファイルをコピーして install_name_tool でパスを更新してください

于 2013-08-12T08:17:49.687 に答える
1

qt を動的ライブラリとして使用する場合は、dylib を配布する必要があります...静的ライブラリとして使用する方がはるかに簡単です。また、共有ライブラリを共有していない場合、共有ライブラリを使用してもあまり得がありません。そのため、プロセスが 1 つしかない場合は、qt を静的ライブラリとしてビルドし、それを製品にリンクすると、実行時の依存関係はなくなります。外部ライブラリで。

于 2013-08-11T16:19:03.500 に答える