This question already has answers here:
Undefined reference to vtable. Trying to compile a Qt project
                                
                                    (17个答案)
                                
                        
                                2年前关闭。
            
                    
这是我的标题:


#ifndef BARELYSOCKET_H
#define BARELYSOCKET_H

#include <QObject>
//! The First Draw of the BarelySocket!

class BarelySocket: public QObject
{
    Q_OBJECT

public:
    BarelySocket();
public slots:
    void sendMessage(Message aMessage);
signals:
    void reciveMessage(Message aMessage);

private:
    //   QVector<Message> reciveMessages;
};

#endif // BARELYSOCKET_H


这是我的课:

#include <QTGui>
#include <QObject>
#include "type.h"
#include "client.h"
#include "server.h"

#include "barelysocket.h"

BarelySocket::BarelySocket()
{
    //this->reciveMessages.clear();
    qDebug("BarelySocket::BarelySocket()");
}

void BarelySocket::sendMessage(Message aMessage)
{
}

void BarelySocket::reciveMessage(Message aMessage)
{
}


我收到一个链接器错误:

undefined reference to 'vtable for BarelySocket'



这意味着我有一个未实现的虚拟方法。但是那里
在我的课堂上没有虚方法。
我评论了媒介,认为这是原因,但是
错误没有消失。
Message是复杂的struct,但是即使使用int
无法解决问题。

最佳答案

每当您向Q_OBJECT宏添加新调用时,都需要再次运行qmake。您所指的vtables问题与此直接相关。

只需运行qmake,并假设代码中没有其他问题,您应该会很好。

关于c++ - Qt链接器错误:“未定义对vtable的引用” ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/43231933/

10-11 22:49
查看更多