【问题标题】:Multiple definition error with 3rd party library(Qextserial) in QTQT中第3方库(Qextserial)的多重定义错误
【发布时间】:2013-01-13 16:21:47
【问题描述】:

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

【问题讨论】:

    标签: c++ qt


    【解决方案1】:

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

    qmake -tp vc
    

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

    【讨论】:

      猜你喜欢
      • 2015-09-25
      • 1970-01-01
      • 2021-12-14
      • 1970-01-01
      • 1970-01-01
      • 2011-06-25
      • 2011-05-02
      • 2022-11-30
      • 1970-01-01
      相关资源
      最近更新 更多