3

私はクロスプラットフォームの Qt4/PyQt4/python アプリケーション、つまり MyGreatApp を作成しました。このアプリケーションの最終バージョンには Phonon モジュールが必要です。MyGreatApp は、Mac OS X 10.6 Snow Leopard の下の自分のマシンで問題なく動作します。より一般的には、たまたま Qt4.4 がインストールされているすべての Mac で動作します。しかし、罪のないマシンは悲惨なことに Phonon のロードに失敗します。

WARNING: bool Phonon::FactoryPrivate::createBackend() phonon backend plugin could not be loaded

いくつかの依存関係が実行可能ファイルに残っていることは明らかです。含まれているフォノンのものは次のとおりです。

$ find . -name "*phonon*" -print
./Contents/Frameworks/phonon.framework
./Contents/Frameworks/phonon.framework/phonon
./Contents/Frameworks/phonon.framework/phonon.prl
./Contents/Frameworks/phonon.framework/Versions/4/phonon
./Contents/plugins/phonon_backend
./Contents/plugins/phonon_backend/libphonon_qt7.dylib
./Contents/Resources/lib/python2.5/lib-dynload/PyQt4/phonon.so

install_name_toolアプリケーションのビルド後に呼び出すコマンドは次のとおりです。

PLUGINSREF = /usr/local/Trolltech/Qt-4.4.3/plugins
QTLIB      = /usr/local/Trolltech/Qt-4.4.3/lib
PLUGINS    = dist/MyGreatApp.app/Contents/plugins
RESOURCES  = dist/MyGreatApp.app/Contents/Resources
PHONON     = phonon.framework/Versions/4/phonon
QTCORE     = QtCore.framework/Versions/4/QtCore
QTGUI      = QtGui.framework/Versions/4/QtGui

echo "Installing plugins"
mkdir -p "$PLUGINS"/phonon_backend
cp $PLUGINSREF/phonon_backend/libphonon_qt7.dylib "$PLUGINS"/phonon_backend
install_name_tool -change $QTLIB/$PHONON @executable_path/../Frameworks/$PHONON "$PLUGINS"/phonon_backend/libphonon_qt7.dylib
install_name_tool -change $QTLIB/$QTCORE @executable_path/../Frameworks/$QTCORE "$PLUGINS"/phonon_backend/libphonon_qt7.dylib
install_name_tool -change $QTLIB/$QTGUI  @executable_path/../Frameworks/$QTGUI  "$PLUGINS"/phonon_backend/libphonon_qt7.dylib

echo "Adding Panther compatibility when building on Leopard"
install_name_tool -change /System/Library/Frameworks/CoreVideo.framework/Versions/A/CoreVideo  /System/Library/Frameworks/QuartzCore.framework/Versions/A/QuartzCore "$PLUGINS"/phonon_backend/libphonon_qt7.dylib

echo "Installing dynamic libraries"
install_name_tool -change $QTLIB/$PHONON @executable_path/../Resources/lib/$PHONON "$RESOURCES"/lib/python2.5/lib-dynload/PyQt4/phonon.so
install_name_tool -change $QTLIB/$QTCORE @executable_path/../Resources/lib/$QTCORE "$RESOURCES"/lib/python2.5/lib-dynload/PyQt4/phonon.so
install_name_tool -change $QTLIB/$QTGUI  @executable_path/../Resources/lib/$QTGUI  "$RESOURCES"/lib/python2.5/lib-dynload/PyQt4/phonon.so

何がうまくいかないのか、または診断を改善するためのヒントはありますか?

4

1 に答える 1

3

Qt のソース ディストリビューションを見ると (ダウンロードして自分でビルドする必要があるかもしれません)、「macdeploy_qt」と呼ばれる小さなユーティリティがビルドされています。実行可能ファイルを使用してアプリケーション バンドルをセットアップし (つまり、myapp.app を作成し、'myapp' 実行可能ファイルを myapp.app/Contents/MacOS に配置)、'macdeploy_qt myapp.app' を実行すると、すべての実行が分析されます。 install_name_tool が実行され、フレームワークからリソースへの移動が行われ、「正常に機能する」はずのアプリ バンドルが返されます (引用符が重い :) )。

于 2009-10-08T21:43:47.340 に答える