Qt linker error when adding class to basic Qt GUI application(将类添加到基本 Qt GUI 应用程序时出现 Qt 链接器错误)
问题描述
我已经苦苦挣扎了一段时间,无法弄清楚这一点.我在我的基本 Qt GUI 应用程序中添加了一个类,但我遇到了链接器错误.我看不出是什么原因造成的,希望得到反馈.
I have been struggling for some time now and can't figure this out. I added a class to my basic Qt GUI application and i got linker errors. I don't see what can cause this and are hoping for feedback.
链接器错误:
main.obj:-1: error: LNK2019: unresolved external symbol "public: void __thiscall Serial::start(enum QSerialPort::BaudRate)" (?start@Serial@@QAEXW4BaudRate@QSerialPort@@@Z) referenced in function _main
main.obj:-1: error: LNK2019: unresolved external symbol "public: __thiscall Serial::Serial(class QObject *)" (??0Serial@@QAE@PAVQObject@@@Z) referenced in function _main
debugTest.exe:-1: error: LNK1120: 2 unresolved externals
这是项目文件:
#-------------------------------------------------
#
# Project created by QtCreator 2013-11-18T10:08:32
#
#-------------------------------------------------
QT       += core gui
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
TARGET = Test
TEMPLATE = app
SOURCES += main.cpp
        mainwindow.cpp 
    serial.cpp
HEADERS  += mainwindow.h 
    serial.h
FORMS    += mainwindow.ui
serial.h 文件:
serial.h file:
#ifndef SERIAL_H
#define SERIAL_H
#include <QObject>
#include <QtSerialPort/QSerialPort>
class Serial : public QObject
{
    Q_OBJECT
public:
    explicit Serial(QObject *parent = 0);
    void start(QSerialPort::BaudRate baudRate);
    bool Serial::closePort();
    void Serial::readData();
signals:
public slots:
};
#endif // SERIAL_H
serial.cpp 文件:
serial.cpp file:
#include "serial.h"
#include <QObject>
#include <QtSerialPort/QSerialPort>
Serial::Serial(QObject *parent) :
    QObject(parent)
{
    serial = new QSerialPort(this);
    connect(serial, SIGNAL(readyRead()), this, SLOT(readData()));
}
bool Serial::start(QSerialPort::BaudRate baudRate)
{
    if(serial.open(QIODevice::ReadWrite))
    {
        //TODO: Connection OK is green in GUI
        QDebug << "Port opened successfully" << std::endl;
        return true;
    }
    else
    {
        //Open failed.
        QDebug << "Port failed to open" << std::endl;
        //TODO: Show error window in GUI
        return false;
    }
    if(
        serial.setBaudRate(baudRate) &&
        serial.setDataBits(QSerialPort::Data8) &&
        serial.setParity(QSerialPort::NoParity) &&
        serial.setStopBits(QSerialPort::OneStop) &&
        serial.setFlowControl(QSerialPort::NoFlowControl)
      )
    {
        //Connection ok.
        QDebug << "Parameters set OK" << std::endl;
    }
    else
    {
        QDebug << "Parameters set FAILED" << std::endl;
        Serial::closePort();
    }
}
bool Serial::closePort()
{
    serial.close();
    //TODO: Connection OK is red in GUI
}
void Serial::readData()
{
    this->readDataArray = this->serial.readAll();
}
推荐答案
如上所述 这里,因为 QtSerialPort 是一个附加模块,您需要将其显式添加到您的项目中:
As noted here, because QtSerialPort is an add on module you need to explicitly add it to your project:
QT += serialport
                        这篇关于将类添加到基本 Qt GUI 应用程序时出现 Qt 链接器错误的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:将类添加到基本 Qt GUI 应用程序时出现 Qt 链接器错误
				
        
 
            
        - 与 int by int 相比,为什么执行 float by float 矩阵乘法更快? 2021-01-01
 - 从python回调到c++的选项 2022-11-16
 - C++ 协变模板 2021-01-01
 - 一起使用 MPI 和 OpenCV 时出现分段错误 2022-01-01
 - 静态初始化顺序失败 2022-01-01
 - 如何对自定义类的向量使用std::find()? 2022-11-07
 - STL 中有 dereference_iterator 吗? 2022-01-01
 - 使用/clr 时出现 LNK2022 错误 2022-01-01
 - 近似搜索的工作原理 2021-01-01
 - Stroustrup 的 Simple_window.h 2022-01-01
 
						
						
						
						
						
				
				
				
				