1

Lion と Mountain Lion を対象とする Qt アプリの構築。ビルド サーバーは Mountain Lion にあります。私は 32 ビットに依存しているので、Qt 4.8.4 をソースからコンパイルしました-arch x86。アプリは Mountain Lion では正常に動作しますが、Lion では起動時にクラッシュします。

スタック トレースの先頭は次のとおりです。

1   QtGui    0x00c6a3e3 QMacPasteboardMime::~QMacPasteboardMime() + 2443
2   QtGui    0x00b904e4 QApplicationPrivate::initializeWidgetPaletteHash() + 6394
3   QtGui    0x00b91420 QApplicationPrivate::initializeWidgetPaletteHash() + 10294
4   QtGui    0x00c051d0 QApplicationPrivate::construct() + 222
5   QtGui    0x00c06052 QApplication::QApplication(int&, char**, int) + 100

32 ビットの依存関係を削除し、ビルド前の Qt 4.8.4 ディストリビューションでビルドすると、問題が修正されます。この Qt ビルド構成に問題がある人はいますか?

./configure \
    -debug-and-release \
    -developer-build \
    -opensource \
    -platform macx-g++ \
    -nomake examples \
    -nomake demos \
    -arch x86

macx-llvm同じ結果でmake specも試しました。フィードバックをお待ちしております。ありがとう!

4

3 に答える 3

0

自作または公式バイナリを使用しないのはなぜですか? どちらも私にとってはうまくいきます。

于 2013-03-17T14:27:01.253 に答える
0

Lion 互換の 32 ビット QT アプリをビルドするときに、同じ動作を経験しました。10.7 用の古い SDK を使用するように Qt を構成することで、この問題を解決することができました。これにより、ビルドが Lion と下位互換性を持つようになりました。

最初に、MacOSX10.7.sdk を古い Xcode バージョンの一部として Apple Developer Center から入手しました。最新の Lion は Xcode 4.3.3 の DMG に組み込まれています ( xcode_4.3.3_for_lion.dmg)。DMG をマウントし/Volumes/Xcode/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKsて、現在の Xcode またはより一般的なものにコピーするだけです。/Developer/SDKs/MacOSX10.7.sdk

次に、QT (私の場合は 4.8.6) を追加の sdk パラメーターで構成して、SDK のターゲットの場所と一致させます。

-sdk /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.7.sdk

于 2014-06-25T15:08:41.977 に答える
0

win32 プラットフォーム用の Qt ライブラリ 4.8.6 をビルドするときに、同様の問題が発生しました。長い調査の結果、Qt バグ 27219 の解決策を特定しました。「このクラッシュは、次のように設定することで解決できます: export DYLD_FORCE_FLAT_NAMESPACE=1」。「 https://bugreports.qt-project.org/browse/QTBUG-27219?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel」を参照してください。

実装の詳細については、「http://0xced.blogspot.ro/2006/07/dealing-with-outdated-open-source-libs.html」を参照してください。フラットな名前空間を強制するには、Info.plist ファイルを更新する必要があります。 DYLD_FORCE_FLAT_NAMESPACE 環境変数を設定します。これは、Info.plist ファイルに次のキーを追加することで実現されます。

<key>LSEnvironment</key>
<dict>
<key>DYLD_FORCE_FLAT_NAMESPACE</key>
<string>YES</string>
</dict>
于 2014-10-20T11:58:17.613 に答える