Russian Qt Forum
Ноябрь 26, 2024, 19:15 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Ошибка линкера не видит класс  (Прочитано 2681 раз)
CJ1
Гость
« : Август 22, 2013, 14:07 »

вот файл про
Код
C++ (Qt)
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
QT    += core gui network
 
 
 
 
TARGET = testAdam
TEMPLATE = app
 
 
SOURCES += main.cpp\
       mainwindow.cpp \
       my_thead.cpp
 
HEADERS  += mainwindow.h \
           my_thead.h
 
FORMS    += mainwindow.ui
 
 

вот файл потока
Код
C++ (Qt)
#include "my_thead.h"
 
 
 
 
XClientThread::XClientThread(QTcpSocket * sock,QObject *parent) : QThread(parent)
{
   this->ok = true;
   this->sock = sock;
   start();
}
 
void XClientThread::setRecvOk()
{
   char data [] = {0x1,0x8,0x5,0xE7,0xC3};
   while(1)
   {
 
       if (ok)
       {
           tcpSocket->write(data);
           ok = false;
       }
   }
}
 
 
void XClientThread::run(){
 
 
}
 
XClientThread::~XClientThread(){
   exit();
   wait();
 
}
 
 

вот файл cpp
Код
C++ (Qt)
#include "mainwindow.h"
#include "ui_mainwindow.h"
 
 
 
MainWindow::MainWindow(QWidget *parent) :
   QMainWindow(parent),
   ui(new Ui::MainWindow)
{
   ui->setupUi(this);
 
}
 
MainWindow::~MainWindow()
{
   delete ui;
}
 
void MainWindow::on_pushButton_clicked()
{
   tcpSocket = new QTcpSocket();
   connect(tcpSocket, SIGNAL(readyRead()), this, SLOT(readSocket()));
   tcpSocket->connectToHost(ui->lineEdit->text(),ui->spinBox->value());
   if (!tcpSocket->waitForConnected()) {
       QMessageBox::about(0,"QTcpSocket","Соеденение не установленно");
       return;
   }
   ui->pushButton->setEnabled(false);
   ui->pushButton_2->setEnabled(true);
}
 
 
void MainWindow::readSocket()
{
   array = tcpSocket->readAll();
   ui->plainTextEdit->appendPlainText(array.toHex().toUpper());
}
 
void MainWindow::on_pushButton_2_clicked()
{
   tcpSocket->disconnectFromHost();
   tcpSocket->close();
   ui->pushButton->setEnabled(true);
   ui->pushButton_2->setEnabled(false);
}
 
void MainWindow::on_pushButton_3_clicked()
{
   xClientThread = new XClientThread(tcpSocket,this);
//    char data [] = {0x1,0x8,0x5,0xE7,0xC3};
//    tcpSocket->write(data);
}
 


Линкер ругается
mainwindow.obj:-1: ошибка: LNK2019: ссылка на неразрешенный внешний символ "public: __thiscall XClientThread::XClientThread(class QTcpSocket *,class QObject *)" (??0XClientThread@@QAE@PAVQTcpSocket@@PAVQObject@@@Z) в функции "private: void __thiscall MainWindow::on_pushButton_3_clicked(void)" (?on_pushButton_3_clicked@MainWindow@@AAEXXZ)
Записан
mutineer
Гость
« Ответ #1 : Август 22, 2013, 14:29 »

my_thread.h инклудится в mainwindow.h или в mainwindow.cpp?

Ну и кстати, в такой реализации поток бесполезен
« Последнее редактирование: Август 22, 2013, 14:33 от mutineer » Записан
CJ1
Гость
« Ответ #2 : Октябрь 24, 2013, 08:15 »

Опять тот же косяк
Записан
mutineer
Гость
« Ответ #3 : Октябрь 24, 2013, 08:28 »

Какой косяк? Ты инклуд сделал?
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.484 секунд. Запросов: 21.