QtMetaObject нерешенная внешняя ошибка в Visual Studio 2017 - PullRequest
0 голосов
/ 16 июня 2020

Я пытаюсь реализовать простое серверное клиентское приложение на QT. Я использую Visual Studio 2017. Вот заголовочный файл моего клиентского класса.

#pragma once
#ifndef  Client_H
#define Client_H

#include <QTcpSocket>


class Client : public QObject 
{   Q_OBJECT

public: 
     explicit Client (QObject *parent = 0);

     void Connect(); 

signals: 

public slots: 

private:
    QTcpSocket *socket; 
};
#endif

, а вот код для Client. cpp

#include "Client.h"

Client::Client(QObject *parent) :
    QObject(parent)
{
}

void Client::Connect()
{
    socket = new QTcpSocket(this); 
    socket->connectToHost("192.168.10.10", 8016); 
    if (socket->waitForConnected(3000))
    {
        printf("COnnected");
    }
    else
    {
        printf("Not Connected");
    }
}

, как вы можете видеть. довольно просто. В моем Main. cpp я создаю экземпляр клиентского класса, а затем вызываю функцию Connect ():

Client Test;
Test.Connect(); 

При создании моего проекта я получаю следующие ошибки:

1>Client.obj : error LNK2001: unresolved external symbol "public: virtual struct QMetaObject const * __cdecl Client::metaObject(void)const " (?metaObject@Client@@UEBAPEBUQMetaObject@@XZ)
1>Client.obj : error LNK2001: unresolved external symbol "public: virtual void * __cdecl Client::qt_metacast(char const *)" (?qt_metacast@Client@@UEAAPEAXPEBD@Z)
1>Client.obj : error LNK2001: unresolved external symbol "public: virtual int __cdecl Client::qt_metacall(enum QMetaObject::Call,int,void * *)" (?qt_metacall@Client@@UEAAHW4Call@QMetaObject@@HPEAPEAX@Z)

Я знаю, что эта ошибка означает, что функции объявлены, но определение отсутствует. Я просто не знаю, где найти эти определения и какой файл мне нужно связать, чтобы избавиться от этих ошибок.

Спасибо

1 Ответ

0 голосов
/ 16 июня 2020

Эти файлы автоматически генерируются инструментом moc. Вы настроили его на запуск при изменении файла заголовка? Вы запускали вручную? Если нет, подумайте об установке инструментов Qt Visual Studio , которые решат эту проблему за вас.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...