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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: Сборка и запуск  (Прочитано 8205 раз)
Account
Гость
« : Июль 18, 2009, 00:34 »

Создал новый консольный проект, привожу листинг main.cpp

Код
C++ (Qt)
#include <QtCore/QCoreApplication>
#include <iostream.h>
#include <stdio.h>
 
int main(int argc, char *argv[])
{
   QCoreApplication a(argc, argv);
   cout<<"Hello Qt\n";
 
   getchar();
   //exit(0); <- вопрос ниже по этому
   return a.exec();
}

Во-первых: при сборке (у меня задокументировано) без
Код
C++ (Qt)
exit(0);
, завершение после ввода симовал не происходит, приложение не завершает работу?

Во-вторых после сборки  уже с
Код
C++ (Qt)
exit(0);
, все нормально работает, Но, захотел  запустить exe, естественно потребовало  mingwm10.dll, докинул, потом еще и  QtCore4.dll, а  больше ничего не требовало , но при запуске ошибка дословно
"ТОчка входа в процедуру _ZN16QCoreApplication4execEv не найдена в библиотеке DLL QtCore4.dll"

Вопрос естественно что да как, т.е. как запустить нормально консольное допустим приложение, и правильно ли что оно при сборке без
Код
C++ (Qt)
exit(0);
приложение не завршается?


Записан
pastor
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 2901



Просмотр профиля WWW
« Ответ #1 : Июль 18, 2009, 00:39 »

1. Почитай в ассистанте про QCoreApplication::exec()

2. exit ненужен. Можешь написать просто:

Код
C++ (Qt)
#include <QtCore/QCoreApplication>
#include <iostream.h>
#include <stdio.h>
 
int main(int argc, char *argv[])
{
   QCoreApplication a(argc, argv);
   cout<<"Hello Qt\n";
 
   getchar();
 
   return 0;
}
« Последнее редактирование: Июль 18, 2009, 01:55 от pastor » Записан

Integrated Computer Solutions, Inc. (ICS)
http://www.ics.com/
Account
Гость
« Ответ #2 : Июль 18, 2009, 00:45 »

Ратаю в окнах XP

собрана по всей видимости с помощью mingw, ибо это просто установленный вариант исходников 4.5.1 взятый с сайта...
собираю из под QTCreator - а там только mingw, насколько я знаю
« Последнее редактирование: Июль 18, 2009, 01:15 от Account » Записан
f-r-o-s-t
Гость
« Ответ #3 : Июль 18, 2009, 11:32 »

Во-вторых после сборки  уже с
Код
C++ (Qt)
exit(0);
, все нормально работает, Но, захотел  запустить exe, естественно потребовало  mingwm10.dll, докинул, потом еще и  QtCore4.dll, а  больше ничего не требовало , но при запуске ошибка дословно
"ТОчка входа в процедуру _ZN16QCoreApplication4execEv не найдена в библиотеке DLL QtCore4.dll"
Копируй QtCore4.dll не из папки bin а из qt/lib.
Записан
Account
Гость
« Ответ #4 : Июль 19, 2009, 14:27 »

f-r-o-s-t  , спасибо, только эта библиотека находеилась не там, у меня Qt установлено на диске с:\ в корне, сначала брал QtCore4.dll, из c:\Qt\2009.03\bin\ , а надо было c:\Qt\2009.03\qt\bin\, все заработало, но вот опять же проблема на завершение выполнения программы

Код
C++ (Qt)
#include <QtCore/QCoreApplication>
#include <iostream.h>
 
int main(int argc, char *argv[])
{
   QCoreApplication a(argc, argv);
 
   cout<<"Hello Qt\n";
   getchar();
 
   return a.exec();
}

Не завершается она нормально после ввода символа( ТАк что так я и не понял что надо, помогает только как писал ранее exit(0)
Объясите новичку)
 
Записан
pastor
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 2901



Просмотр профиля WWW
« Ответ #5 : Июль 19, 2009, 14:32 »

Не завершается она нормально после ввода символа( ТАк что так я и не понял что надо, помогает только как писал ранее exit(0)
Объясите новичку)

А пример я для кого привел?
Записан

Integrated Computer Solutions, Inc. (ICS)
http://www.ics.com/
f-r-o-s-t
Гость
« Ответ #6 : Июль 19, 2009, 14:33 »

она и не должна после getchar() завершаться, т.к. запускаешь цикл обработки событий потом =)
как уже сказали почитай про QCoreApplication::exec()
Записан
Account
Гость
« Ответ #7 : Июль 19, 2009, 14:39 »

f-r-o-s-t , у меня с английским шляпа, но обязательно сегодня почитаю)
А пока просто решил проблему вот так
Код
C++ (Qt)
#include <QtCore/QCoreApplication>
#include <iostream.h>
 
int main(int argc, char *argv[])
{   char c;
   QCoreApplication a(argc, argv);
   cout<<"Hello Qt\n";
   getchar();
   return 0;
}

ну и конечно если вот атк просто кончольные какие то проги делать то переносить себе дороже, библиотека вон QtCore4 за 2 Мега весит(
Записан
f-r-o-s-t
Гость
« Ответ #8 : Июль 19, 2009, 14:49 »

А зачем такие проги переносить ? =)

Тема про размер уже разжевана и пережевана, можете поискать по форуму.
Записан
Account
Гость
« Ответ #9 : Июль 19, 2009, 14:57 »

А зачем такие проги переносить ? =)
Тема про размер уже разжевана и пережевана, можете поискать по форуму.

Естетсвенно незачем))), просто эксперементирую))
Тему по размеру уже видел и читал))

P.S.# Звиняюсь за оффтоп)
Записан
Account
Гость
« Ответ #10 : Июль 19, 2009, 15:16 »

Посмотрел инфу по QCoreApplication::exec() (честно так как с английским не очень, не особо понял) сделал в итоге вот так
Код
C++ (Qt)
#include <QtCore/QCoreApplication>
#include <iostream.h>
 
int main(int argc, char *argv[])
{
   QCoreApplication a(argc, argv);
   cout<<"Hello Qt\n";
   getchar();
   a.exit(0);
}

БУдет парвильно так или нет?
Записан
lit-uriy
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3880


Просмотр профиля WWW
« Ответ #11 : Июль 19, 2009, 15:19 »

Да зачем в таком приложении exec()?
У тебя нет событий чтобы их обрабатывать. И первый вариант pastor'а с return 0; более чем достаточный.
Записан

Юра.
f-r-o-s-t
Гость
« Ответ #12 : Июль 19, 2009, 15:22 »

2Account я тебе все таки рекомендую английский подтянуть, ибо assistent невероятно удобная вещь =)
Записан
Account
Гость
« Ответ #13 : Июль 19, 2009, 15:26 »


f-r-o-s-t , да я понимаю, из-за незанния его страдаю очень(( Но в школе немец учил, и счас приходиться в институте, а так всетаки помогает то что в техже IDE и языках хоть технически немного понимаю))
И всетаки я понимаю что достал наверное , но вот правильнее и корректнее  (по стандарту) как завершать
a.exit(0) или return 0  ?

Записан
lit-uriy
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3880


Просмотр профиля WWW
« Ответ #14 : Июль 19, 2009, 15:57 »

>>как завершать a.exit(0) или return 0  ?
В асистенте написано, что эта функция завершает выполнение QCoreApplication::exec(), т.к. последней у тебя нет, то и QCoreApplication::exit() тебе ни к чему
Записан

Юра.
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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