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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: Прошу помощи - компилирует ошибку постоянно  (Прочитано 6340 раз)
Green_
Гость
« : Май 07, 2013, 13:53 »

Доброго времени суток.
Ситуация такова... изучаю Qt по видеоурокам от Brayn'a (например, вот по этому видео http://www.youtube.com/watch?v=xm_fkZolMFA)...все идет хорошо, но вот проблема стала в том, что при выполнении точно таих же манипуляций и кода программы и т.д. у меня вылазит ошибка. Причем не только в этом уроке, что указал выше, а во многих.
Версии в уроке Qt creator'a  2.1.0 (или 2.2.0 - он там в каком-то уроке показывал, что обновил версию программы), а у меня 2.7.0

сама ошибка:


и вылазит она на подключении класса С++ и вызова его в main.cpp. Без этих 2х строчек объявления и вызова все работает хорошо. Склоняюсь к тому, что либо в последней версии что-то поменяли, что надо что-то прописывать отдельно, либо сами настройки Qt нужно просмотреть...возможно какие библиотеки по умолчанию чтобы работали.

Помогите куда копать и на что думать, чтобы убрать ошибку. Или может где галочку поставить в настройках и все будет гуд)

вот эти строки в main.cpp:
   MyServer Server;
    Server.StartServer();



PoolSrv.pro
Код:
QT       += core
QT       += network
QT       -= gui

TARGET = PoolSrv
CONFIG   += console
CONFIG   -= app_bundle

TEMPLATE = app


SOURCES += main.cpp \
    myserver.cpp \
    myrunnable.cpp

HEADERS += \
    myserver.h \
    myrunnable.h

myrunnable.h
Код:
#ifndef MYRUNNABLE_H
#define MYRUNNABLE_H

#include <QRunnable>
#include <QTcpSocket>
#include <QDebug>

class MyRunnable : public QRunnable
{
public:
    explicit MyRunnable();
    int SocketDescriptor;

protected:
    void run();
    
    
};

#endif // MYRUNNABLE_H

myserver.h
Код:
#ifndef MYSERVER_H
#define MYSERVER_H

#include <QTcpServer>
#include <QThreadPool>
#include <QDebug>
#include "myrunnable.h"

class MyServer : public QTcpServer
{
    Q_OBJECT
public:
    explicit MyServer(QObject *parent = 0);
    void StartServer();

protected:
    void incomingConnection(int handle);

signals:
    
public slots:

private:
    QThreadPool * pool;
    
};

#endif // MYSERVER_H

main.cpp
Код:
#include <QtCore/QCoreApplication>
#include "myserver.h"
#include "myrunnable.h"


int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);

    MyServer Server;
    Server.StartServer();

    
    return a.exec();
}

myrunnable.cpp
Код:
 #include "myrunnable.h"

MyRunnable::MyRunnable() :
{
}

void MyRunnable::run()
{
    if(!SocketDescriptor) return;

    QTcpSocket socket;
    socket.setSocketDescriptor(SocketDescriptor);

    socket.write("hello world");
    socket.flush();
    socket.waitForBytesWritten();
    socket.close();
}

myserver.cpp
Код:
#include "myserver.h"

MyServer::MyServer(QObject *parent) :
    QTcpServer(parent)
{
    pool = new QThreadPool(this);
    pool->setMaxThreadCount(5);
}

void MyServer::StartServer()
{
    if(this->listen(QHostAddress::Any,1234))
    {
        qDebug() << "Server started";
    }
    else
    {
        qDebug() << "Server did not start!";
    }
}

void MyServer::incomingConnection(int handle)
{
    MyRunnable *task = new MyRunnable();
    task->setAutoDelete(true);

    task->SocketDescriptor = hendle;
    pool->start(task);
}
« Последнее редактирование: Май 07, 2013, 13:59 от Green_ » Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #1 : Май 07, 2013, 14:03 »

Выглядит так что myserver.cpp не подключен к проекту. Для начала поставить в этом файле (можно первой строкой)

#error "123"

и смотреть выскочит ли эта ошибка. Потом проверять может namespace где-то затесалось
Записан
Fat-Zer
Гость
« Ответ #2 : Май 07, 2013, 14:15 »

и ещё попробуй сборка->очистить всё и сборка->пересобрать всё...
Записан
Green_
Гость
« Ответ #3 : Май 07, 2013, 21:14 »

Выглядит так что myserver.cpp не подключен к проекту. Для начала поставить в этом файле (можно первой строкой)

#error "123"

и смотреть выскочит ли эта ошибка. Потом проверять может namespace где-то затесалось

Вы имеете в виду вот так?

myserver.cpp
Код:
#error "123"
#include "myserver.h"

MyServer::MyServer(QObject *parent) :
    QTcpServer(parent)
{
    pool = new QThreadPool(this);
    pool->setMaxThreadCount(5);
}

void MyServer::StartServer()
{
    if(this->listen(QHostAddress::Any,1234))
    {
        qDebug() << "Server started";
    }
    else
    {
        qDebug() << "Server did not start!";
    }
}

void MyServer::incomingConnection(int handle)
{
    MyRunnable *task = new MyRunnable();
    task->setAutoDelete(true);

    task->SocketDescriptor = hendle;
    pool->start(task);
}

Те же ошибки при компиляции. Новых нет.
Namespace или что-то подобное - это вряд ли. Я тупо проверил все что написано в видеоуроке и не раз прошелся по всем пунктам. В уроке все стартануло, у меня не хочет работать с классом С++ (комментирую те 2 строки объявления класса и все работает).
т.е.
main.cpp
Код:
    //MyServer Server;
    //Server.StartServer();

и ещё попробуй сборка->очистить всё и сборка->пересобрать всё...

не помогло =(
« Последнее редактирование: Май 07, 2013, 21:19 от Green_ » Записан
Bepec
Гость
« Ответ #4 : Май 07, 2013, 21:25 »

Проект в архив, архив в сообщение, сообщение на форум, я скачиваю, компилирую, разбираюсь с ошибкой. План ошибок не имеет, выполнять Улыбающийся

PS данное сообщение является шуточным, но содержит в себе алгоритм действий для достижения максимального результата в минимальные сроки.
Записан
Green_
Гость
« Ответ #5 : Май 07, 2013, 21:39 »

to Bepec

http://rghost.ru/45837038

я залил папку, созданную Qt. нужны ли еще какие файлы? Просто запустив проект не в родной папке, а из-под другого локального диска - там даже при комментировании тех 2х строк в main.cpp вылазит эта ошибка. При том, что в родной папке, где проект создавался все нормально при комментировании
« Последнее редактирование: Май 07, 2013, 21:42 от Green_ » Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #6 : Май 07, 2013, 21:44 »

Код
C++ (Qt)
MyRunnable::MyRunnable()
: QRunnable ()
{
}
 
Код
C++ (Qt)
void MyServer::incomingConnection(int handle)
{
MyRunnable *task = new MyRunnable();
task->setAutoDelete(true);
 
task->SocketDescriptor = handle;
pool->start(task);
}
 
Собирается.
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
Green_
Гость
« Ответ #7 : Май 07, 2013, 21:56 »

to Пантер

Эти места вполне собираются. Проблема решается, когда я в main.cpp не объявляю переменную Server, а после не вызываю из нее команду Server.StartServer();

т.е. при комментировании этих 2х строчек мы имеем рабочую программу.
вот эти строки:
Код:
// MyServer Server;
// Server.StartServer();
Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #8 : Май 07, 2013, 21:59 »

Значит что-то у тебя не так. У меня не собиралось, пока я не фиксанул ошибки. Исправленный код я указал. дальше все собирается без проблем.
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
Green_
Гость
« Ответ #9 : Май 07, 2013, 22:11 »

тогда вопрос в другом. как правильно собирать qt-creator? возможно я не все собрал
мои действия:
скачал с http://qt-project.org/downloads
сам Qt 5.0: The binary packages include Qt 5.0.2 libraries and Qt Creator 2.7.0
файл Qt 5.0.2 for Windows 32-bit (VS 2010, 485 MB) (Info)
установил этот exe и все. Я что-то пропустил?
Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #10 : Май 07, 2013, 22:18 »

qt-creator тут не при чем, это всего лишь IDE.
По 5 Кьюту не подскажу, ибо не щупал его еще.
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
Lettuce
Гость
« Ответ #11 : Май 07, 2013, 23:00 »

тогда вопрос в другом. как правильно собирать qt-creator? возможно я не все собрал
мои действия:
скачал с http://qt-project.org/downloads
сам Qt 5.0: The binary packages include Qt 5.0.2 libraries and Qt Creator 2.7.0
файл Qt 5.0.2 for Windows 32-bit (VS 2010, 485 MB) (Info)
установил этот exe и все. Я что-то пропустил?

Нет, всё правильно сделали, сам этими сборками пользуюсь, правда с компилятором mingw. Но у меня всё откомпилировалось с первого раза, не считая мелких ошибок вроде hEndle вместо hAndle, так что попробуйте сборку с mingw, либо поковыряйте VS.
« Последнее редактирование: Май 07, 2013, 23:02 от Lettuce » Записан
Green_
Гость
« Ответ #12 : Май 07, 2013, 23:35 »

to Lettuce
вполне придется переустановить Qt. Я реально не могу понять почему он не хочет работать с обычными с виду классами и переменными от них.
Качаю mingv и проверю на нем как докачаю.

а VS 2010 у меня установлен, но я им не пользуюсь - все собирается в Qt creator'e. Как вариант, возможно настройки самого VS "испортили" Qt...хотя и там и там там все стоит по умолчанию и я ничего не менял. И не портировал
Записан
Green_
Гость
« Ответ #13 : Май 08, 2013, 01:30 »

Переставил Qt с VS на mingv - все заработало. Я даже не знаю что сказать - и на VS и тут настройки по умолчанию. Причину таких  косяков так и не понял.
Всем спасибо за помощь! Буду дальше разбираться)
Записан
ViTech
Гипер активный житель
*****
Offline Offline

Сообщений: 858



Просмотр профиля
« Ответ #14 : Май 08, 2013, 10:50 »

После исправления ошибок, которые привел Пантер, на Qt 5.0.2 компилятором от VS 2012 собирается нормально. Правда Qt я сам собирал, но это не должно влиять на компиляцию такого простого проекта. Может надо было запустить еще раз qmake для проекта и пересобрать, иногда помогает Улыбающийся.
Записан

Пока сам не сделаешь...
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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