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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: ошибка компиляции простейшего приложения  (Прочитано 11959 раз)
mr.Koddy
Гость
« : Сентябрь 30, 2004, 21:34 »

Програмлю под линуху:)АСП 9.2.Первый раз.Улыбающийся
Создаю проект в qt-Designer.Создаю пустую форму.Ничего не меняю.Создаю main.cpp:
Код:

#include <qapplication.h>
//#include "unnamed1.h" его у меня нет вобще
int main( int argc, char ** argv )
{
    QApplication a( argc, argv );
    Form1 a;
    a.show();
    a.connect( &a, SIGNAL( lastWindowClosed() ), &a, SLOT( quit() ) );
    return a.exec();
}

#qmake  - ok
#make
Код:

g++ -c -pipe -Wall -W -O2 -g -pipe -march=i386 -mcpu=i686 -fno-use-cxa-atexit -fno-exceptions  -DQT_NO_DEBUG -I/usr/lib/qt-3.1/mkspecs/default -I. -I/usr/lib/qt-3.1/include -I.ui/ -I. -I.moc/ -o .obj/main.o main.cpp
main.cpp: In function `int main(int, char**)':
main.cpp:6: error: syntax error before `;' token
main.cpp:7: error: `show' undeclared (first use this function)
main.cpp:7: error: (Each undeclared identifier is reported only once for each
   function it appears in.)
make: *** [.obj/main.o] Ошибка 1

Могу предположить , что не известно что такое "Form1"Хотя может я и не прав.
В чем глюк?
Спасибо.
Записан
EugeneVC
Гость
« Ответ #1 : Октябрь 01, 2004, 09:02 »

QApplication a( argc, argv );
Form1 a;


у тебя 2 обьекта названы как a
Записан
mr.Koddy
Гость
« Ответ #2 : Октябрь 01, 2004, 10:37 »

гм....так по моему было во всех исходниках, где создавалсь просто приложение.Поменял название у Form1- тоже самое.
Записан
Anonymous
Гость
« Ответ #3 : Октябрь 01, 2004, 11:14 »

А где
Код:
#include "file_where_your_Form1_declarated.h" 
?[/code]
Записан
Anonymous
Гость
« Ответ #4 : Октябрь 01, 2004, 16:16 »

Код:

#include <qapplication.h>
#include "form1.h"  // <----- если форма называется form1.ui
int main( int argc, char ** argv )
{
    QApplication a( argc, argv );
    Form1 frm1;
    a.setMainWidget(&frm1);
    frm1.show();
    return a.exec();
}


Так должно работать в любом случае.

смотри тут
Записан
mr.Koddy
Гость
« Ответ #5 : Октябрь 01, 2004, 19:25 »

Спасибо.Вроде заработало.То что я писал, тоже компилиться, но через ж.Надо юзать сначала uic, создать два файла с описнием методов и классов(базовых повидимому), а потом уже make. Мне это не очень понравилось.
ЗЫ: А чем отличается мой код от кода Гостя?
Записан
mr.Koddy
Гость
« Ответ #6 : Октябрь 01, 2004, 19:28 »

Ой, забыл спросить.Мне вот не понятно почему все ж таки то, что создано по умолчанию qt(main.cpp) так геморно собирается(с ошибками если "не так" собирать) и приходиться код переписывать?
Записан
mr.Koddy
Гость
« Ответ #7 : Октябрь 01, 2004, 20:15 »

Подскажите еще, как мне потимизировать приложение по размеру, а то просто форма без всего весит аж 600кб+?
Записан
EugeneVC
Гость
« Ответ #8 : Октябрь 01, 2004, 21:27 »

Цитата: "mr.Koddy"
Подскажите еще, как мне потимизировать приложение по размеру, а то просто форма без всего весит аж 600кб+?


а ты где пишешь
Win32 или Линукс

если Линукс то можно strip -s твойexe

сильно размер уменьшишь
Записан
mr.Koddy
Гость
« Ответ #9 : Октябрь 02, 2004, 11:28 »

В линухе.
Поподробнее плиз. make strip -s my_programm так чтоли?
Записан
EugeneVC
Гость
« Ответ #10 : Октябрь 04, 2004, 11:06 »

make не надо

strip -s твойexe

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


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