无法制作qmqtt

时间:2017-06-13 10:59:12

标签: qt

我以前安装过qt4。现在,我已经安装了QT5.7。我正在尝试编译qmqtt项目以生成libqmqtt文件。 Qmake很好。但是make会出现以下错误。

链接: https://github.com/emqtt/qmqtt

g++ -c -g -O2 -fstack-protector --param=ssp-buffer-size=4 -Wformat -Werror=format-security -D_FORTIFY_SOURCE=2 -O2 -fvisibility=hidden -fvisibility-inlines-hidden -std=c++0x -fno-exceptions -Wall -W -D_REENTRANT -fPIC -DQT_NO_MTDEV -DQT_NO_CAST_TO_ASCII -DQT_NO_CAST_FROM_ASCII -DQT_BUILD_MQTT_LIB -DQT_BUILDING_QT -DQT_ASCII_CAST_WARNINGS -DQT_MOC_COMPAT -DQT_USE_QSTRINGBUILDER -DQT_DEPRECATED_WARNINGS -DQT_DISABLE_DEPRECATED_BEFORE=0x050000 -DQT_NO_EXCEPTIONS -D_LARGEFILE64_SOURCE -D_LARGEFILE_SOURCE -DQT_NO_DEBUG -DQT_NETWORK_LIB -DQT_CORE_LIB -I/usr/lib/x86_64-linux-gnu/qt5/mkspecs/linux-g++-64 -I/home/sm/qt_applications/qmqtt/qmqtt-master/src/mqtt -I/home/sm/qt_applications/qmqtt/qmqtt-master/src/mqtt -I/home/sm/qt_applications/qmqtt/qmqtt-master/include -I/home/sm/qt_applications/qmqtt/qmqtt-master/include/qmqtt -I../../include -I../../include/qmqtt -I/home/sm/qt_applications/qmqtt/qmqtt-master/include/qmqtt/1.0.0 -I/home/sm/qt_applications/qmqtt/qmqtt-master/include/qmqtt/1.0.0/qmqtt -I/usr/include/qt5 -I/usr/include/qt5/QtNetwork -I/usr/include/qt5/QtCore -I.moc -I. -o .obj/qmqtt_routedmessage.o /home/sm/qt_applications/qmqtt/qmqtt-master/src/mqtt/qmqtt_routedmessage.cpp
g++ -c -g -O2 -fstack-protector --param=ssp-buffer-size=4 -Wformat -Werror=format-security -D_FORTIFY_SOURCE=2 -O2 -fvisibility=hidden -fvisibility-inlines-hidden -std=c++0x -fno-exceptions -Wall -W -D_REENTRANT -fPIC -DQT_NO_MTDEV -DQT_NO_CAST_TO_ASCII -DQT_NO_CAST_FROM_ASCII -DQT_BUILD_MQTT_LIB -DQT_BUILDING_QT -DQT_ASCII_CAST_WARNINGS -DQT_MOC_COMPAT -DQT_USE_QSTRINGBUILDER -DQT_DEPRECATED_WARNINGS -DQT_DISABLE_DEPRECATED_BEFORE=0x050000 -DQT_NO_EXCEPTIONS -D_LARGEFILE64_SOURCE -D_LARGEFILE_SOURCE -DQT_NO_DEBUG -DQT_NETWORK_LIB -DQT_CORE_LIB -I/usr/lib/x86_64-linux-gnu/qt5/mkspecs/linux-g++-64 -I/home/sm/qt_applications/qmqtt/qmqtt-master/src/mqtt -I/home/sm/qt_applications/qmqtt/qmqtt-master/src/mqtt -I/home/sm/qt_applications/qmqtt/qmqtt-master/include -I/home/sm/qt_applications/qmqtt/qmqtt-master/include/qmqtt -I../../include -I../../include/qmqtt -I/home/sm/qt_applications/qmqtt/qmqtt-master/include/qmqtt/1.0.0 -I/home/sm/qt_applications/qmqtt/qmqtt-master/include/qmqtt/1.0.0/qmqtt -I/usr/include/qt5 -I/usr/include/qt5/QtNetwork -I/usr/include/qt5/QtCore -I.moc -I. -o .obj/qmqtt_router.o /home/sm/qt_applications/qmqtt/qmqtt-master/src/mqtt/qmqtt_router.cpp
In file included from /usr/include/qt5/QtCore/qobjectdefs.h:47:0,
                 from /usr/include/qt5/QtCore/qobject.h:48,
                 from /usr/include/qt5/QtCore/QObject:1,
                 from /home/sm/qt_applications/qmqtt/qmqtt-master/src/mqtt/qmqtt_router.h:38,
                 from /home/sm/qt_applications/qmqtt/qmqtt-master/src/mqtt/qmqtt_router.cpp:33:
/usr/include/qt5/QtCore/qobjectdefs_impl.h: In instantiation of ‘struct QtPrivate::AreArgumentsCompatible<QMQTT::Message, QMQTT::Message>’:
/usr/include/qt5/QtCore/qobjectdefs_impl.h:599:21:   required from ‘struct QtPrivate::CheckCompatibleArguments<QtPrivate::List<const QMQTT::Message&>, QtPrivate::List<const QMQTT::Message&> >’
/usr/include/qt5/QtCore/qobject.h:241:80:   required from ‘static QMetaObject::Connection QObject::connect(const typename QtPrivate::FunctionPointer<Func>::Object*, Func1, const typename QtPrivate::FunctionPointer<Func2>::Object*, Func2, Qt::ConnectionType) [with Func1 = void (QMQTT::Client::*)(const QMQTT::Message&); Func2 = void (QMQTT::RouteSubscription::*)(const QMQTT::Message&); typename QtPrivate::FunctionPointer<Func>::Object = QMQTT::Client; typename QtPrivate::FunctionPointer<Func2>::Object = QMQTT::RouteSubscription]’
/home/sm/qt_applications/qmqtt/qmqtt-master/src/mqtt/qmqtt_router.cpp:52:87:   required from here
/usr/include/qt5/QtCore/qobjectdefs_impl.h:573:42: error: invalid use of incomplete type ‘class QMQTT::Message’
         enum { value = sizeof(test(dummy())) == sizeof(int) };
                                          ^
In file included from /home/sm/qt_applications/qmqtt/qmqtt-master/src/mqtt/qmqtt_router.cpp:35:0:
/home/sm/qt_applications/qmqtt/qmqtt-master/src/mqtt/qmqtt_client.h:95:7: error: forward declaration of ‘class QMQTT::Message’
 class Message;
       ^
In file included from /home/sm/qt_applications/qmqtt/qmqtt-master/src/mqtt/qmqtt_global.h:35:0,
                 from /home/sm/qt_applications/qmqtt/qmqtt-master/src/mqtt/qmqtt_router.h:36,
                 from /home/sm/qt_applications/qmqtt/qmqtt-master/src/mqtt/qmqtt_router.cpp:33:
/usr/include/qt5/QtCore/qobject.h: In instantiation of ‘static QMetaObject::Connection QObject::connect(const typename QtPrivate::FunctionPointer<Func>::Object*, Func1, const typename QtPrivate::FunctionPointer<Func2>::Object*, Func2, Qt::ConnectionType) [with Func1 = void (QMQTT::Client::*)(const QMQTT::Message&); Func2 = void (QMQTT::RouteSubscription::*)(const QMQTT::Message&); typename QtPrivate::FunctionPointer<Func>::Object = QMQTT::Client; typename QtPrivate::FunctionPointer<Func2>::Object = QMQTT::RouteSubscription]’:
/home/sm/qt_applications/qmqtt/qmqtt-master/src/mqtt/qmqtt_router.cpp:52:87:   required from here
/usr/include/qt5/QtCore/qglobal.h:669:47: error: static assertion failed: Signal and slot arguments are not compatible.
 #define Q_STATIC_ASSERT_X(Condition, Message) static_assert(bool(Condition), Message)
                                               ^
/usr/include/qt5/QtCore/qobject.h:228:9: note: in expansion of macro ‘Q_STATIC_ASSERT_X’
         Q_STATIC_ASSERT_X((QtPrivate::CheckCompatibleArguments<typename SignalType::Arguments, typename SlotType::Arguments>::value),
         ^
make[2]: *** [.obj/qmqtt_router.o] Error 1
make[2]: Leaving directory `/home/sm/qt_applications/qmqtt/qmqtt-master/build/src/mqtt'
make[1]: *** [sub-mqtt-make_first] Error 2
make[1]: Leaving directory `/home/sm/qt_applications/qmqtt/qmqtt-master/build/src'
make: *** [sub-src-make_first] Error 2

1 个答案:

答案 0 :(得分:0)

花了很多时间。通过Qt 5.7.0编译后,文件夹“ release”中没有Dll文件。我查看编译日志,发现在项目的磁盘根目录中创建了文件夹“ lib”,在其中找到了Dll。但是使用DLL可以使您在Windows上工作。我需要在Android上。

github中,有人建议将其用作普通代码。

我将其重写为“普通代码”,并创建了示例项目。 It is here。有两个文件夹:project和mosquitto,用于在本地主机上使用mqtt