Russian Qt Forum

Qt => Общие вопросы => Тема начата: BuRn от Сентябрь 28, 2014, 13:01



Название: Что-то не понятное с консольным приложением Qt
Отправлено: BuRn от Сентябрь 28, 2014, 13:01
Существует консольное приложение с использованием QObject -ов, но происходит что - то не понятное. Есть main :
Код:
#include <QCoreApplication>
#include "serverwc.h"
#include <iostream>
#include <QtCore>
int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);
    try{
        ServerWc serv;
        serv.start();
    }
    catch(WcError& e){
        std::cout<<e.getText().toStdString();
        exit(0);
    }
    return a.exec();
}
Вот про файл этого проекта:
Код:
QT       += core network
QMAKE_CXXFLAGS += -std=c++11
QT       -= gui

TARGET = ServerWc
CONFIG   += console
CONFIG   -= app_bundle

TEMPLATE = app


SOURCES += main.cpp \
    serverwc.cpp \
    handlerclientrequest.cpp

HEADERS += \
    serverwc.h \
    handlerclientrequest.h

win32:CONFIG(release, debug|release): LIBS += -L$$OUT_PWD/../errorLib/release/ -lerrorLib
else:win32:CONFIG(debug, debug|release): LIBS += -L$$OUT_PWD/../errorLib/debug/ -lerrorLib
else:unix: LIBS += -L$$OUT_PWD/../errorLib/ -lerrorLib

INCLUDEPATH += $$PWD/../errorLib
DEPENDPATH += $$PWD/../errorLib

win32:CONFIG(release, debug|release): LIBS += -L$$OUT_PWD/../protocolExchanged/release/ -lprotocolExchanged
else:win32:CONFIG(debug, debug|release): LIBS += -L$$OUT_PWD/../protocolExchanged/debug/ -lprotocolExchanged
else:unix: LIBS += -L$$OUT_PWD/../protocolExchanged/ -lprotocolExchanged -lprotobuf

INCLUDEPATH += $$PWD/../protocolExchanged
DEPENDPATH += $$PWD/../protocolExchanged
Все собрал, но при попытке запуска просто висит с сообщением типа "Запускается ...". Отладить тоже ничего не получается, ибо отладчик вовсе не запускается, висит на "Launched debugger". Если запускать приложение из консоли, то там оно просто висит. Добавил тестовый вывод в конструктор класса ServerWC, но при запуске и того сообщения в лог не получаю. Что делаю не так?


Название: Re: Что-то не понятное с консольным приложением Qt
Отправлено: sergek от Сентябрь 28, 2014, 13:12
м.б. здесь не хватает ServerWc?


Название: Re: Что-то не понятное с консольным приложением Qt
Отправлено: BuRn от Сентябрь 28, 2014, 13:34
м.б. здесь не хватает ServerWc?
Если вы про сам класс, то нет, он лежит рядом с main.cpp


Название: Re: Что-то не понятное с консольным приложением Qt
Отправлено: alex312 от Сентябрь 28, 2014, 13:43
измени код main так :
Код
C++ (Qt)
.....
QCoreApplication a(argc, argv);
int res = 0;
   try{
       ServerWc serv;
       serv.start();
       res = a.exec();
   }
.....
return res;
 
И почитай что-то про блоки кода и автоматическое удаление обьектов при выходе из блока.


Название: Re: Что-то не понятное с консольным приложением Qt
Отправлено: BuRn от Сентябрь 28, 2014, 17:53
измени код main так :
Код
C++ (Qt)
.....
QCoreApplication a(argc, argv);
int res = 0;
   try{
       ServerWc serv;
       serv.start();
       res = a.exec();
   }
.....
return res;
 
И почитай что-то про блоки кода и автоматическое удаление обьектов при выходе из блока.
К сожалению не помогло, что интересно, если в теле main убить все и оставить только int a=2; return 0; то ситуация аналогичная, отладчик цепляться не хочет. Хотя если в таком случае запускать из консоли, то оно хотя бы не виснет.
Поправка. Отладчиком цеплятся не удается, а вот приложение запустилось ок, порт открыля


Название: Re: Что-то не понятное с консольным приложением Qt
Отправлено: navrocky от Сентябрь 30, 2014, 08:10
Отладчик не цепляется если сборка без отладочной информации. Проверь, все ли у тебя с этим в порядке, бинарь должен получаться большим.