Поиск:

Ответ в темуСоздание новой темы Создание опроса
> QT. Cannot open include file 
:(
    Опции темы
rudolfninja
Дата 21.11.2013, 14:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 341
Регистрация: 19.2.2013
Где: г. Минск

Репутация: нет
Всего: 6



Добрый день. Компилятор не видит *.h файлы, хотя они существуют и лежат по правильному пути.
*.pro файл
Код

QT       += core
QT       += network
QT       -= gui
TARGET = server
CONFIG   += console
CONFIG   -= app_bundle
TEMPLATE = app
SOURCES += main.cpp \
    server.cpp \
    client.cpp \
    test.cpp
HEADERS += \
    client.h \
    server.h \
    test.h

client.h и client.cpp
Код

#ifndef CLIENT_H
#define CLIENT_H

#include <QtNetwork>
#include <QTcpSocket>
#include <QHostAddress>

class client
{
private:
    QString _nickname;
    QString _computer_name;
    QString _ip_address;
    QTcpSocket* _socket;
    int _port;
public:
    client();
    client(QString nickname, int port);

    void set_nickname(QString nickname){_nickname = nickname;}
    QString get_nickname(){return _nickname;}

    void set_port(int port){_port = port;}
    int get_port(){return _port;}

    bool set_socket(QTcpSocket* socket);

    QString get_ip_address(){return _ip_address;}
    QString get_comp_name() {return _computer_name;}
};

#endif // CLIENT_H

//cpp

#include "client.h"


client::client(): _port(0), _socket(NULL)
{

}

client::client(QString nickname, int port):  _nickname(nickname), _port(port), _socket(NULL)
{

}



bool client::set_socket(QTcpSocket *socket)
{
    if(socket != NULL)
        return false;
    _socket = socket;
    _ip_address = socket->peerAddress().toString();
    _computer_name = socket->peerName();

    return true;
}

server.h и server.cpp
Код

#ifndef SERVER_H
#define SERVER_H

#include <vector>
#include <client.h>
#include <QTcpServer>
#include <QDataStream>
#include <QRegExp>


class server
{
private:
    int _port;
    std::vector<client> _client_list;
    QTcpServer* _socket;
    bool _is_started;

    void send_to_client(QTcpSocket* client_socket, QString& msg);
public:
    bool start(int port = 0);
    void stop();
    int get_port(){return _port;}
    server();
    ~server();

public slots:
    void slot_new_connection();
    void slot_read_from_client();
};

#endif // SERVER_H

//cpp

#include "server.h"

bool server::start(int port)
{
    _port = port;
    if(!_is_started){
        _is_started = _socket->listen(QHostAddress::Any, _port);
        return _is_started;
    }
    return false;
}

void server::stop()
{
    if(_is_started){
        _socket->close();
        _is_started = false;
    }
}

server::server() : _is_started(false)
{
    _socket = new QTcpServer(this);
    _port = 0;

    QObject::connect(_socket, SIGNAL(newConnection()), this, SLOT(slot_new_connection()));
}

server::~server()
{
    delete _socket();
    _socket = NULL;
    _port = 0;
}

void server::slot_new_connection()
{
    client* new_client = new client();
    QTcpSocket* client_socket = _socket->nextPendingConnection();
    new_client->set_socket(client_socket);
    QObject::connect(client_socket, SIGNAL(readyRead()), this, SLOT(slot_read_from_client()));
}

void server::slot_read_from_client()
{
    QTcpSocket* socket = (QTcpSocket*)sender();
    QDataStream in(socket);
    QRegExp nick_reg_exp("#nickname\<([^\>]+)>");
    in.setVersion(QDataStream::Qt_5_1);
    int next_datablock_size = 0;

    while(true)
    {
        if(socket->bytesAvailable() < sizeof(int))
            break;
        in >> next_datablock_size;

        if(socket->bytesAvailable() < next_datablock_size)
            break;

        QTime time;
        QString msg;
        QString nickname;

        in >> time >> msg;
        if(msg.startsWith("#nickname<")){
            int pos = nick_reg_exp.indexIn(msg);
            if(pos > -1)
                nickname = nick_reg_exp.cap(1);
        }
        next_datablock_size = 0;
    }
}

main.cpp
Код

#include <QCoreApplication>
#include <server.h>
#include <QTextStream>

int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);
    server host;
    if(host.start(1111))
        QTextStream(stdout) << "success" << endl;
    else
        QTextStream(stdout) << "failed" << endl;

    return a.exec();
}

Компилятор выдает две ошибки:
D:\Docs\BSUIR\lab6\server\server.h:5: error: C1083: Cannot open include file: 'client.h': No such file or directory
D:\Docs\BSUIR\lab6\server\main.cpp:2: error: C1083: Cannot open include file: 'server.h': No such file or directory
В чем может быть проблема и как ее решить?

Спасибо.
PM MAIL Skype   Вверх
Majestio
Дата 21.11.2013, 14:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 83
Регистрация: 19.12.2010

Репутация: нет
Всего: нет



в .pro добавить:

INCLUDEPATH += <ваш путь>
PM MAIL WWW   Вверх
rudolfninja
Дата 21.11.2013, 15:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 341
Регистрация: 19.2.2013
Где: г. Минск

Репутация: нет
Всего: 6



Majestio, спасибо, помогло.
PM MAIL Skype   Вверх
Majestio
Дата 21.11.2013, 15:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 83
Регистрация: 19.12.2010

Репутация: нет
Всего: нет



Те назашта. 
Только с настройками среды все равно там че-то не так. 
Так как подсказанное мною - не что иное как костыль.
PM MAIL WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С/С++: Кроссплатформенное программирование, QT/Gtk+/wxWidgets"
JackYF
Любитель
  • В заголовке темы в квадратных скобках обозначьте используемую вами библиотеку, например: [QT],[GTK],[wx].
  • Если вопрос актуален только для некоторой версии библиотеки, либо, если вы пользуетесь не самой последней версией, укажите это. Например: [QT4], [GTK2].
  • Все начинающие изучать Qt - не забудьте зайти сюда.
  • Проставьте несколько ключевых слов темы, чтобы её можно было легче найти.
  • В вопросе укажите полную версию версию библиотеки, а также все дополнительные используемые программные пакеты.
  • Не забывайте пользоваться кнопкой "Код".
  • Телепатов на форуме нет! Задавайте чёткий, конкретный и полный вопрос. Указывайте полностью ошибки компилятора и компоновщика.
  • Новое сообщение должно иметь прямое отношение к тематике этого раздела. Флуд, флейм, оффтопик запрещены.
  • Категорически запрещается обсуждение вареза, "кряков", взлома программ и т.д.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, Любитель.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | С/С++: Кроссплатформенное программирование, Qt/Gtk+/wxWidgets | Следующая тема »


 




[ Время генерации скрипта: 0.0438 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.