QT中第三方库(Qextserial)的多重定义错误

时间:2013-01-13 16:21:48

标签: c++ qt

我正在使用QT进行UI应用程序。应用程序将在桌面上运行以从用户获取bin文件,它将通过串行端口编程微控制器。我已选择“qextserialport”库进行串口通信。

我在我的课程中包含了qextserialport标题,如:

#ifndef __SERIALHELPER_H
#define __SERIALHELPER_H
#include <serialPortDriver/qextserialport.h>
#include "QThread"

class serialHelper : public QThread
{ etc.....

在.pro文件中,我为qextSerial添加了这一行

include(qextserialport.pri)

现在我收到了多个定义错误:

./ debug \ moc_qextserialenumerator.o:在函数'ZN20QextSerialEnumerator18qt_static_metacallEP7QObjectN11QMetaObject4CallEiPPv'中:

D:\ QTNTloader-build-minGW-Debug / debug / moc_qextserialenumerator.cpp:47:'QextSerialEnumerator :: qt_static_metacall的多重定义(QObject *,QMetaObject :: Call,int,void **)'

./ debug \ qextserialenumerator.o:D:\ QTNTloader-build-minGW-Debug /../ QTNTloader2 / serialPortDriver // moc_qextserialenumerator.cpp:47:首先在这里定义

因为这是我第一个使用QT的UI程序,所以无法找到解决方案。你对错误的原因有什么看法吗?

现在还有一件事在我脑海中下载qextserial的时候我打开它作为项目,构建它并获取.moc文件并手动将它们添加到我的项目中。我这样做是因为我收到了关于丢失moc文件的错误,我做了一些我不想做的事吗?

1 个答案:

答案 0 :(得分:0)

您不必手动将.moc文件添加到项目中,让qmake为您执行此操作。 打开Visual Studio命令提示符(从“开始”菜单),转到包含.pro文件的文件夹,然后运行:

qmake -tp vc

这应创建一个vcproj文件,您可以在Visual Studio中打开该文件,其中包含编译和链接所需的所有文件。