0

我正在使用 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 文件的错误,我做了吗我不应该做的事情?

4

1 回答 1

0

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

qmake -tp vc

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

于 2013-01-14T17:15:47.473 回答