Qt + QtMobility プラグインを使用した C++ 開発に MacOS X を使用しています。Qt 内でのビルドと実行は問題なく動作します。macdeployqt MyApp.app
コンパイル (リリースまたはデバッグ) 後、ターミナルで呼び出して静的リンクでデプロイすると、便利なフレームワークがアプリケーション パッケージに正常に追加されますが、起動時にアプリケーションがエラーでクラッシュします。
QPixmap: QPaintDevice の前に QApplication を構築する必要があります
これを調査した後、コンストラクターで QPixmap が設定されている場合、エラーは QtMobility API (66 行目の qgeotiledmapdata_nokia.cpp ファイル) から発生します。
QGeoTiledMapDataNokia::QGeoTiledMapDataNokia(QGeoMappingManagerEngineNokia *engine) :
QGeoTiledMapData(engine),
watermark(":/images/watermark.png")
{...}
したがって、このコンストラクターは main() の前に呼び出され、アプリがクラッシュするようです。
QtMobility API (1.2) をそのまま使用して、このエラーを取り除くにはどうすればよいですか?
どうもありがとうございました。
編集:主な方法は次のとおりです。
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
MainWindow w;
QApplication::instance()->installEventFilter(&w);
w.show();
return a.exec();
}
エラーログは以下です。
Thread 0 Crashed: Dispatch queue: com.apple.main-thread
0 libSystem.B.dylib 0x00007fff827af616 __kill + 10
1 libSystem.B.dylib 0x00007fff8284fcca abort + 83
2 QtCore 0x00000001020b4145 qt_message_output(QtMsgType, char const*) + 117
3 QtCore 0x00000001020b4327 qt_message(QtMsgType, char const*, __va_list_tag*) + 183
4 QtCore 0x00000001020b44ea qFatal(char const*, ...) + 170
5 QtGui 0x00000001013f1afe qt_pixmap_thread_test() + 94
6 QtGui 0x00000001013f2ea2 QPixmap::QPixmap(QSize const&) + 50
7 QtLocation 0x000000010013b63e QtMobility::QGeoTiledMapData::setZoomLevel(double) + 206
8 QtLocation 0x000000010013c15e QtMobility::QGeoTiledMapData::QGeoTiledMapData(QtMobility::QGeoMappingManagerEngine*) + 110
9 ...oservices_nokia_debug.dylib 0x000000011540d40f QGeoTiledMapDataNokia::QGeoTiledMapDataNokia(QGeoMappingManagerEngineNokia*) + 33 (qgeotiledmapdata_nokia.cpp:66)
10 ...oservices_nokia_debug.dylib 0x00000001153f73a0 QGeoMappingManagerEngineNokia::createMapData() + 40 (qgeomappingmanagerengine_nokia.cpp:162)
11 QtLocation 0x0000000100158ea3 QtMobility::QGraphicsGeoMap::QGraphicsGeoMap(QtMobility::QGeoMappingManager*, QGraphicsItem*) + 115
12 com.MyCompany.MyApp 0x000000010001fb8b GeoMap::GeoMap(QtMobility::QGeoMappingManager*) + 27
13 com.MyCompany.MyApp 0x0000000100020e9b MapsWidget::initialize(QtMobility::QGeoMappingManager*, QtMobility::QGeoSearchManager*) + 75
14 com.MyCompany.MyApp 0x000000010000a321 MainWindow::MainWindow() + 849
15 com.MyCompany.MyApp 0x0000000100004fcf main + 943
16 com.MyCompany.MyApp 0x0000000100004a76 _start + 224
17 com.MyCompany.MyApp 0x0000000100004995 start + 33