我正在使用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