[Interest] Q_OS_ANDROID macro
Nuno Santos
nunosantos at imaginando.pt
Wed Feb 4 19:52:52 CET 2015
Hi,
I have found a workaround for the problem. I have included the
BonjourRecord header because it doesn't have any dependency on
dns_sd.h. This way I can safely declare the slots on the header. The
main problem here is that the moc_ doesn't know about Q_OS_ANDROID when
it is generated which will generate entry for the slots that shouldn't
be there.
public slots:
#ifndef Q_OS_ANDROID
void recordAdded(const BonjourRecord &record);
void recordRemoved(const BonjourRecord &record);
void bonjourRecordResolved(const QHostInfo &hostInfo, int port);
#endif
Anyway, as you requested, this is the complete output of the error:
.build\moc\moc_LKBridgeBrowser.cpp
.build\moc\moc_LKBridgeBrowser.cpp: In static member function 'static
void LKBridgeBrowser::qt_static_metacall(QObject*, QMetaObject::Call,
int, void**)':
.build\moc\moc_LKBridgeBrowser.cpp:126:21: error: 'class
LKBridgeBrowser' has no member named 'recordAdded'
case 6: _t->recordAdded((*reinterpret_cast< const
BonjourRecord(*)>(_a[1]))); break;
^
.build\moc\moc_LKBridgeBrowser.cpp:127:21: error: 'class
LKBridgeBrowser' has no member named 'recordRemoved'
case 7: _t->recordRemoved((*reinterpret_cast< const
BonjourRecord(*)>(_a[1]))); break;
^
.build\moc\moc_LKBridgeBrowser.cpp:128:21: error: 'class
LKBridgeBrowser' has no member named 'bonjourRecordResolved'
case 8: _t->bonjourRecordResolved((*reinterpret_cast< const
QHostInfo(*)>(_a[1])),(*reinterpret_cast< int(*)>(_a[2]))); break;
^
In file included from
..\..\Qt\5.4\5.4\android_armv7\include/QtCore/qnamespace.h:37:0,
from
..\..\Qt\5.4\5.4\android_armv7\include/QtCore/qobjectdefs.h:41,
from
..\..\Qt\5.4\5.4\android_armv7\include\QtCore/qobject.h:40,
from
..\..\Qt\5.4\5.4\android_armv7\include\QtCore/QObject:1,
from
.build\moc\../../../../Users/nsantos/Dropbox/workspace/livkontrol/qt/livkontrol/LKBridgeBrowser.h:4,
from .build\moc\moc_LKBridgeBrowser.cpp:9:
..\..\Qt\5.4\5.4\android_armv7\include/QtCore/qmetatype.h: In
instantiation of 'constexpr int qMetaTypeId() [with T = BonjourRecord]':
..\..\Qt\5.4\5.4\android_armv7\include/QtCore/qmetatype.h:1655:27:
required from 'constexpr int qRegisterMetaType() [with T = BonjourRecord]'
.build\moc\moc_LKBridgeBrowser.cpp:138:85: required from here
..\..\Qt\5.4\5.4\android_armv7\include/QtCore/qglobal.h:684:47: error:
static assertion failed: Type is not registered, please use the
Q_DECLARE_METATYPE macro to make it known to Qt's meta-object system
#define Q_STATIC_ASSERT_X(Condition, Message)
static_assert(bool(Condition), Message)
^
..\..\Qt\5.4\5.4\android_armv7\include/QtCore/qmetatype.h:1648:5: note:
in expansion of macro 'Q_STATIC_ASSERT_X'
Q_STATIC_ASSERT_X(QMetaTypeId2<T>::Defined, "Type is not
registered, please use the Q_DECLARE_METATYPE macro to make it known to
Qt's meta-object system");
^
In file included from
..\..\Qt\5.4\5.4\android_armv7\include\QtCore/qobject.h:48:0,
from
..\..\Qt\5.4\5.4\android_armv7\include\QtCore/QObject:1,
from
.build\moc\../../../../Users/nsantos/Dropbox/workspace/livkontrol/qt/livkontrol/LKBridgeBrowser.h:4,
from .build\moc\moc_LKBridgeBrowser.cpp:9:
..\..\Qt\5.4\5.4\android_armv7\include/QtCore/qmetatype.h: In
instantiation of 'static constexpr int QMetaTypeId2<T>::qt_metatype_id()
[with T = BonjourRecord]':
..\..\Qt\5.4\5.4\android_armv7\include/QtCore/qmetatype.h:1649:44:
required from 'constexpr int qMetaTypeId() [with T = BonjourRecord]'
..\..\Qt\5.4\5.4\android_armv7\include/QtCore/qmetatype.h:1655:27:
required from 'constexpr int qRegisterMetaType() [with T = BonjourRecord]'
.build\moc\moc_LKBridgeBrowser.cpp:138:85: required from here
..\..\Qt\5.4\5.4\android_armv7\include/QtCore/qmetatype.h:1509:97:
error: 'qt_metatype_id' is not a member of 'QMetaTypeId<BonjourRecord>'
static inline Q_DECL_CONSTEXPR int qt_metatype_id() { return
QMetaTypeId<T>::qt_metatype_id(); }
^
..\..\Qt\5.4\5.4\android_armv7\include/QtCore/qmetatype.h:1509:100:
error: body of constexpr function 'static constexpr int
QMetaTypeId2<T>::qt_metatype_id() [with T = BonjourRecord]' not a
return-statement
static inline Q_DECL_CONSTEXPR int qt_metatype_id() { return
QMetaTypeId<T>::qt_metatype_id(); }
^
..\..\Qt\5.4\5.4\android_armv7\include/QtCore/qmetatype.h: In static
member function 'static constexpr int QMetaTypeId2<T>::qt_metatype_id()
[with T = BonjourRecord]':
..\..\Qt\5.4\5.4\android_armv7\include/QtCore/qmetatype.h:1509:100:
warning: control reaches end of non-void function [-Wreturn-type]
makefile:37868: recipe for target '.build\obj\moc_LKBridgeBrowser.obj'
failed
mingw32-make: *** [.build\obj\moc_LKBridgeBrowser.obj] Error 1
18:47:48: The process "C:\Qt\5.4\Tools\mingw491_32\bin\mingw32-make.exe"
exited with code 2.
Error while building/deploying project livkontrol (kit: Android for
armeabi-v7a (GCC 4.9, Qt 5.4.0))
When executing step "Make"
18:47:48: Elapsed time: 00:03.
On 04/02/2015 18:36, Giuseppe D'Angelo wrote:
> Il 04/02/2015 11:05, Nuno Santos ha scritto:
>> When compiling for Android, moc file as complaining about not having
>> the implementation of the methods above which means that the
>> preprocessor has passed over Q_OS_ANDROID, however, QtCreator had
>> that area greyed out.
>
> Could you please send the exact error you're having? I'm interested in
> who's complaining exactly about what.
>
> It shouldn't be moc -- moc can't care less about who implements some
> slots. It could be the compiler (if you're defining member functions
> without declaring them, that is, you're missing the matching #ifndef
> in your .cpp files), or the linker (which would possibly mean that moc
> picked up those member functions and it's referencing them, but their
> symbols are not present in any object file)...
>
> Thanks,
>
>
> _______________________________________________
> Interest mailing list
> Interest at qt-project.org
> http://lists.qt-project.org/mailman/listinfo/interest
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.qt-project.org/pipermail/interest/attachments/20150204/63f05ca0/attachment.html>
More information about the Interest
mailing list