Приложение (C ++) падает при запуске после статической сборки с QtMobility - PullRequest
0 голосов
/ 13 июня 2011

Я использую MacOS X для разработки на C ++ с плагином Qt + QtMobility. Сборка и запуск в Qt работает нормально. После компиляции (выпуска или отладки), а затем вызова в терминале macdeployqt MyApp.app до развертывания со статической связью , в пакет приложения успешно добавляются полезные платформы, но при запуске приложение вылетает с ошибкой:

QPixmap: необходимо создать QApplication перед QPaintDevice

После изучения этого, ошибка возникает из API QtMobility (файл qgeotiledmapdata_nokia.cpp в строке 66), когда QPixmap установлен в конструкторе:

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