Я использую 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