应用程序(C ++)在使用QtMobility进行静态构建后在启动时崩溃

时间:2011-06-13 08:54:49

标签: c++ qt macos qt-mobility

我正在使用Mac OS X进行C ++开发,使用Qt + QtMobility插件。在Qt内构建和运行工作正常。在编译(发布或调试)然后在终端macdeployqt MyApp.app中调用使用静态链接部署之后,有用的框架被成功添加到应用程序包中,但是在启动时,应用程序崩溃并出现错误:< / p>

  

QPixmap:必须构建一个QApplication   在QPaintDevice之前

在对此进行调查之后,当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

0 个答案:

没有答案