Friday, January 29, 2010

Troubleshooting Qt Mobility Messaging for Symbian

My issue is compiling a Qt Mobility Messaging app for the WINSCW is not working. Qt Contacts work fine.

It seems to complain about two header files (only): qmessageglobal.h and qmessagedatacomparator.h

Other Qt Mobility headers are properly in C:\S60\devices\S60_3rd_FP2_SDK_v1.1\epoc32\include

Error messages:

make -r -f "\S60\devices\S60_3rd_FP2_SDK_v1.1\EPOC32\BUILD\Users\ceefour\Documents\qtcontest\message-merge\WINSCW.make" MAKEFILE VERBOSE=-s
WARNING: Can't find following headers in System Include Path
<qmessageglobal.h> <qmessageglobal.h> <qmessageglobal.h> <qmessageglobal.h> <qmessageglobal.h> <qmessageglobal.h> <qmessageglobal.h> <qmessageglobal.h> <qmessageglobal.h> <qmessageglobal.h> <qmessagedatacomparator.h> <qmessageglobal.h> <qmessagedatacomparator.h> <qmessageglobal.h> <qmessagedatacomparator.h> <qmessageglobal.h> <qmessageglobal.h> <qmessageglobal.h> <qmessageglobal.h> <qmessageglobal.h>
(Sys Inc Paths "\Qt\4.6.1-symbian\include\QtCore\" "\Qt\4.6.1-symbian\include\QtCore\tmp\" "\Qt\4.6.1-symbian\include\QtGui\" "\Qt\4.6.1-symbian\include\QtGui\tmp\" "\Qt\4.6.1-symbian\include\" "\Qt\4.6.1-symbian\include\tmp\" "\Users\ceefour\Documents\qtcontest\message-merge\" "\Users\ceefour\Documents\qtcontest\message-merge\tmp\" "\Qt\4.6.1-symbian\mkspecs\common\symbian\" "\Qt\4.6.1-symbian\mkspecs\common\symbian\tmp\" "\S60\devices\S60_3rd_FP2_SDK_v1.1\epoc32\include\" "\S60\devices\S60_3rd_FP2_SDK_v1.1\epoc32\include\stdapis\" "\S60\devices\S60_3rd_FP2_SDK_v1.1\epoc32\include\stdapis\sys\" "\S60\devices\S60_3rd_FP2_SDK_v1.1\epoc32\include\stdapis\stlport\" "\S60\devices\S60_3rd_FP2_SDK_v1.1\epoc32\include\variant")
Dependency list for "\Users\ceefour\Documents\qtcontest\message-merge\mainwizard.cpp" may be incomplete


Basically the errors boil down to :

the file 'qmessageglobal.h' cannot be opened

Solution

Make sure you've already added to the .pro file :

CONFIG += mobility
MOBILITY += messaging

You need to #include <qtmessaging.h> instead of individual qmessage* header files.

Then if it complains:

WARNING: Can't find following headers in System Include Path
<qtmessaging.h>
qtmessaging.h: No such file or directory

This means you have not configured Qt Mobility Messaging properly. (copying headers happened in "configure" stage, not "make")

Redo the configure, and check that you have qtmessaging.h in C:\S60\devices\S60_3rd_FP2_SDK_v1.1\epoc32\include

If it still doesn't show up, like in my case, there's a hack/workaround. Copy the following files manually from C:\QtMobility\src\messaging to C:\S60\devices\S60_3rd_FP2_SDK_v1.1\epoc32\include :
  • qtmessaging.h
  • qmessageglobal.h
  • qmessagedatacomparator.h
Assuming Qt Mobility Messaging was built successfully, at least in my case, my Qt Mobility Messaging app works fine.

1 comment:

  1. u could also try to see if your .pro file has
    CONFIG += mobility

    if that doesn't work you can add "CONFIG += mobility" to your qmake
    qmake ..... "CONFIG += mobility"

    this should work

    ReplyDelete

Be the first to comment!