Russian Qt Forum

Qt => Установка, сборка, отладка, тестирование => Тема начата: Layer от Сентябрь 25, 2010, 12:10



Название: Не компилит простой код
Отправлено: Layer от Сентябрь 25, 2010, 12:10
Код
C++ (Qt)
 
Пишу на плюсах, пару дней назад решил попробовать кьют..
скачал комплект с оф. сайта версии 4.7 и creator 2.0.1

насколько понял он автоматом должен все пути прописывать при установке...
но почитав статьи и вопросы на тему настройки, решил посмотреть переменные среды
в PATH ничего не оказалось.. прописал ручками

Код
Bash
set MINGW=...
set QMAKESPEC=win32-g++
set QTDIR=....
set PATH=%QTDIR%/bin;%MINGW%/bin
 

теперь когда захожу в Creator Инструменты->Параметры->Qt4
и там теперь в автоопределении есть путь до qmake.exe
сразу после установки, там было написано что не определено..
думал это как то повлияет но всё равно возникли ошибки при компиляции...

вот такой код выполняет без проблем:
Код
C++ (Qt)
#include <QtCore/QCoreApplication>
#include <QtGui/QLabel>
#include <Qt/qlabel.h>
#include <iostream>
#include <stdio.h>
#include <conio.h>
 
using namespace std;
int main(int argc, char *argv[])
{
   QCoreApplication a(argc, argv);
   cout << "Hi!" << endl;
   char ch;
   cin >> ch;
   getch();
   return 0;
   //a.exec();
}
 

а вот на этот простой пример из книги

Код
C++ (Qt)
#include <QtCore/QCoreApplication>
#include <QtGui/QLabel>
#include <Qt/qlabel.h>
#include <iostream>
#include <stdio.h>
#include <conio.h>
 
using namespace std;
int main(int argc, char *argv[])
{
   QCoreApplication a(argc, argv);
   QLabel lbl("aaa");
   lbl.show();
   return 0;
   //a.exec();
 

выдает ошибки..

текст консоли сборки:
Выполняется сборка проекта console_first...
Настройки не изменились, этап qmake пропускается.
Запускается "C:/Qt/2010.05/mingw/bin/mingw32-make.exe" -w
mingw32-make: Entering directory `D:/Archive/work/Qt_prj/console_first-build-desktop'

C:/Qt/2010.05/mingw/bin/mingw32-make -f Makefile.Debug

mingw32-make[1]: Entering directory `D:/Archive/work/Qt_prj/console_first-build-desktop'

g++ -c -g -frtti -fexceptions -mthreads -Wall -DUNICODE -DQT_LARGEFILE_SUPPORT -DQT_DLL -DQT_CORE_LIB -DQT_THREAD_SUPPORT -I'c:/Qt/2010.05/qt/include/QtCore' -I'c:/Qt/2010.05/qt/include' -I'c:/Qt/2010.05/qt/include/ActiveQt' -I'debug' -I'../console_first' -I'.' -I'c:/Qt/2010.05/qt/mkspecs/win32-g++' -o debug/main.o ../console_first/main.cpp

In file included from ../console_first/main.cpp:3:

c:/Qt/2010.05/qt/include/Qt/qlabel.h:3: warning: ignoring #pragma warning

g++ -enable-stdcall-fixup -Wl,-enable-auto-import -Wl,-enable-runtime-pseudo-reloc -Wl,-subsystem,console -mthreads -Wl -o debug/console_first.exe debug/main.o  -L'c:/Qt/2010.05/qt/lib' -lQtCored4

mingw32-make[1]: Leaving directory `D:/Archive/work/Qt_prj/console_first-build-desktop'

mingw32-make: Leaving directory `D:/Archive/work/Qt_prj/console_first-build-desktop'

debug/main.o: In function `main':

D:\Archive\work\Qt_prj\console_first-build-desktop/../console_first/main.cpp:12: undefined reference to `_imp___ZN6QLabelC1ERK7QStringP7QWidget6QFlagsIN2Qt10WindowTypeEE'

D:\Archive\work\Qt_prj\console_first-build-desktop/../console_first/main.cpp:20: undefined reference to `_imp___ZN6QLabelD1Ev'

D:\Archive\work\Qt_prj\console_first-build-desktop/../console_first/main.cpp:20: undefined reference to `_imp___ZN6QLabelD1Ev'

collect2: ld returned 1 exit status

mingw32-make[1]: *** [debug/console_first.exe] Error 1

mingw32-make: *** [debug] Error 2

Процесс "C:/Qt/2010.05/mingw/bin/mingw32-make.exe" завершился с кодом %2.
Возникла ошибка при сборке проекта console_first (цель: Настольный компьютер)
Во время выполнения сборки на этапе "Сборка"

подскажите чего не так у меня сделано или настроено?


Название: Re: Не компилит простой код
Отправлено: MuLLIKA от Сентябрь 25, 2010, 12:17
может так долдно быть  return a.exec();


Название: Re: Не компилит простой код
Отправлено: Авварон от Сентябрь 25, 2010, 12:24
а кто вас просил лезть куда не просят? Креатору чхать на патх, он сам всё прописывает. Но у вас, похоже, всё прописано правильно.
покажите лучше .pro файл


Название: Re: Не компилит простой код
Отправлено: BRE от Сентябрь 25, 2010, 12:42
QCoreApplication + виджеты?
Для QLabel нужно QApplication + подключить в проекте линковку QtGui.


Название: Re: Не компилит простой код
Отправлено: Layer от Сентябрь 25, 2010, 12:43
может так долдно быть  return a.exec();

пробовал и так.. то же самое..


Название: Re: Не компилит простой код
Отправлено: Авварон от Сентябрь 25, 2010, 12:46
подключить в проекте линковку QtGui.
вот я и прошу про-файл:)


Название: Re: Не компилит простой код
Отправлено: BRE от Сентябрь 25, 2010, 12:47
вот я и прошу про-файл:)
Ну там и по выводу компилятора видно, что QtGui не подключается.  :)


Название: Re: Не компилит простой код
Отправлено: Layer от Сентябрь 25, 2010, 12:47
а кто вас просил лезть куда не просят? Креатору чхать на патх, он сам всё прописывает. Но у вас, похоже, всё прописано правильно.
покажите лучше .pro файл

полез я туда только тогда когда стал получать подобные ошибки, а так после установки ничего не трогал..
только вот понял что хэдэры некоторые лежат в других директориях, не так как в примерах книги написано=)

про-файл:

QT       += core
QT       -= gui

TARGET = console_first
CONFIG   += console
CONFIG   -= app_bundle

TEMPLATE = app

SOURCES += main.cpp


Название: Re: Не компилит простой код
Отправлено: Авварон от Сентябрь 25, 2010, 12:51
убрать
QT       -= gui
убрать
CONFIG   += console
CONFIG   -= app_bundle


Название: Re: Не компилит простой код
Отправлено: Layer от Сентябрь 25, 2010, 12:52
QCoreApplication + виджеты?
Для QLabel нужно QApplication + подключить в проекте линковку QtGui.

QCoreApplication  - подключает видимо визард самостоятельно..

прописываю..
#include <QtGui/QApplication>

ошибки выдает те же самые

в книге вообще кроме
#include <QtGui>
ничего нету

а у меня creator говорит что нет такой директории..

видимо просто недосмотрел я чего-то) не попалась нужной информации..
подскажите по поводу линковки чего где надо подключить?


Название: Re: Не компилит простой код
Отправлено: BRE от Сентябрь 25, 2010, 12:54
подскажите по поводу линковки чего где надо подключить?
Читай выше ответ Авварон.

После подключения модуля gui, все нужные заголовочные файлы (QApplication, QLabel, ...) будут доступны.


Название: Re: Не компилит простой код
Отправлено: Layer от Сентябрь 25, 2010, 13:07
подскажите по поводу линковки чего где надо подключить?
Читай выше ответ Авварон.

После подключения модуля gui, все нужные заголовочные файлы (QApplication, QLabel, ...) будут доступны.

спасибо! теперь работает как полагается)

но в книге ничего не было сказано про настройку pro-файла
буду разбираться:)


Название: Re: Не компилит простой код
Отправлено: Авварон от Сентябрь 25, 2010, 13:13
при создании проекта вы указываете тип - консоль или гуи.
а в книге нет ничего, потому что дефолтные настройки соотвествуют гуи проекту (по хорошему QT       += core тоже не нужно, тк qmake по умолчанию подключает core и gui)


Название: Re: Не компилит простой код
Отправлено: Layer от Сентябрь 25, 2010, 13:28
при создании проекта вы указываете тип - консоль или гуи.
а в книге нет ничего, потому что дефолтные настройки соотвествуют гуи проекту (по хорошему QT       += core тоже не нужно, тк qmake по умолчанию подключает core и gui)

большое спасибо=)