не компилируются qt3 includes (g++ не находит объявления)

Модератор: Модераторы разделов

Аватара пользователя
powerfox
Сообщения: 458

не компилируются qt3 includes

Сообщение powerfox »

Код: Выделить всё

[fox@localhost qt]$ cat helloqt.cpp
#include <qapplication.h>
#include <qlabel.h>

int main(int argc, char *argv[])
{
        QApplication app (argc, argv);
        Qlabel *label = new Qlabel("Hello qt!", 0);
        app.setMainWidget(label);
        label -> show();
        return app.exec();
}


Далее всё как в кни ге:

Код: Выделить всё

[fox@localhost qt]$ qmake -project
[fox@localhost qt]$ qmake
[fox@localhost qt]$ make
g++ -c -pipe -Wall -W -O2 -fomit-frame-pointer -pipe -march=i586 -mcpu=pentiumpro -DQT_NO_DEBUG  -I/usr/lib/qt3/mkspecs/default -I. -I. -I/usr/lib/qt3//include -o helloqt.o helloqt.cpp
helloqt.cpp: In function `int main(int, char**)':
helloqt.cpp:7: error: `Qlabel' undeclared (first use this function)
helloqt.cpp:7: error: (Each undeclared identifier is reported only once for each function it appears in.)
helloqt.cpp:7: error: `label' undeclared (first use this function)
helloqt.cpp:7: error: syntax error before `(' token
make: *** [helloqt.o] Ошибка 1
[fox@localhost qt]$


Как видно include найдены, а в них копаться g++ не хочет.
Спасибо сказали:
Аватара пользователя
agbr
Сообщения: 486
ОС: openSUSE 10.2

Re: не компилируются qt3 includes

Сообщение agbr »

QLabel пишется именно так с двумя первыми большими буквами, а не "Qlabel".
jabber: agbr@jabber.ru

против проприетарного ПО в GNU/Linux
Спасибо сказали:
Аватара пользователя
powerfox
Сообщения: 458

Re: не компилируются qt3 includes

Сообщение powerfox »

agbr писал(а):
08.10.2005 21:13
QLabel пишется именно так с двумя первыми большими буквами, а не "Qlabel".

Исправил, теперь ещё больше сообщений

Код: Выделить всё

[fox@localhost qt]$ make
g++ -c -pipe -Wall -W -O2 -fomit-frame-pointer -pipe -march=i586 -mcpu=pentiumpr
o -DQT_NO_DEBUG  -I/usr/lib/qt3/mkspecs/default -I. -I. -I/usr/lib/qt3//include
-o helloqt.o helloqt.cpp
g++  -o qt helloqt.o   -L/usr/X11R6/lib -lXext -lX11 -lm
helloqt.o(.text+0x2a): In function `main':
: undefined reference to `QApplication::QApplication[in-charge](int&, char**)'
helloqt.o(.text+0x50): In function `main':
: undefined reference to `QString::QString[in-charge](char const*)'
helloqt.o(.text+0x6e): In function `main':
: undefined reference to `QLabel::QLabel[in-charge](QString const&, QWidget*, ch
ar const*, unsigned)'
helloqt.o(.text+0x84): In function `main':
: undefined reference to `QString::shared_null'
helloqt.o(.text+0x8e): In function `main':
: undefined reference to `QStringData::deleteSelf()'
helloqt.o(.text+0x9a): In function `main':
: undefined reference to `QApplication::setMainWidget(QWidget*)'
helloqt.o(.text+0xad): In function `main':
: undefined reference to `QApplication::exec()'
helloqt.o(.text+0xb7): In function `main':
: undefined reference to `QApplication::~QApplication [in-charge]()'
helloqt.o(.text+0xd6): In function `main':
: undefined reference to `QApplication::~QApplication [in-charge]()'
helloqt.o(.text+0x104): In function `main':
: undefined reference to `QString::shared_null'
helloqt.o(.text+0x10e): In function `main':
: undefined reference to `QStringData::deleteSelf()'
helloqt.o(.gnu.linkonce.r._ZTV6QGList+0xc): undefined reference to `QGList::clea                                            r()'
helloqt.o(.gnu.linkonce.r._ZTV6QGList+0x10): undefined reference to `QGList::~QG                                            List [in-charge]()'
helloqt.o(.gnu.linkonce.r._ZTV6QGList+0x14): undefined reference to `QGList::~QG                                            List [in-charge deleting]()'
helloqt.o(.gnu.linkonce.r._ZTV6QGList+0x18): undefined reference to `QPtrCollect                                            ion::newItem(void*)'
helloqt.o(.gnu.linkonce.r._ZTV6QGList+0x20): undefined reference to `QGList::com                                            pareItems(void*, void*)'
helloqt.o(.gnu.linkonce.r._ZTV6QGList+0x24): undefined reference to `QGList::rea                                            d(QDataStream&, void*&)'
helloqt.o(.gnu.linkonce.r._ZTV6QGList+0x28): undefined reference to `QGList::wri                                            te(QDataStream&, void*) const'
helloqt.o(.gnu.linkonce.r._ZTI6QGList+0x8): undefined reference to `typeinfo for                                             QPtrCollection'
collect2: ld returned 1 exit status
make: *** [qt] Ошибка 1
[fox@localhost qt]$
Спасибо сказали:
Аватара пользователя
agbr
Сообщения: 486
ОС: openSUSE 10.2

Re: не компилируются qt3 includes

Сообщение agbr »

вместо

Код: Выделить всё

g++ -o qt helloqt.o -L/usr/X11R6/lib -lXext -lX11 -lm


должно быть:

Код: Выделить всё

g++ -o qt helloqt.o -L/usr/X11R6/lib -lXext -lX11 -lm -lqt

или

Код: Выделить всё

g++ -o qt helloqt.o -L/usr/X11R6/lib -lXext -lX11 -lm -lqt-mt


а то ты не скормил линковщику qt'шную библиотеку, и он жалуется что не может найти функции, которые ты просишь у него.
jabber: agbr@jabber.ru

против проприетарного ПО в GNU/Linux
Спасибо сказали:
Аватара пользователя
powerfox
Сообщения: 458

Re: не компилируются qt3 includes

Сообщение powerfox »

agbr писал(а):
09.10.2005 14:16
вместо

Код: Выделить всё

g++ -o qt helloqt.o -L/usr/X11R6/lib -lXext -lX11 -lm


должно быть:

Код: Выделить всё

g++ -o qt helloqt.o -L/usr/X11R6/lib -lXext -lX11 -lm -lqt

или

Код: Выделить всё

g++ -o qt helloqt.o -L/usr/X11R6/lib -lXext -lX11 -lm -lqt-mt


а то ты не скормил линковщику qt'шную библиотеку, и он жалуется что не может найти функции, которые ты просишь у него.

Я сделал

Код: Выделить всё


ldconfig -n /usr/lib/qt3/lib

теперь работает опция -lqt и -lqt-mt. Но снова не компайлится. Не компайлятся и qt examples.

Код: Выделить всё

[fox@localhost qt]$ cat helloqt.cpp
#include <qapplication.h>
#include <qlabel.h>

int main(int argc, char *argv[])
{
        QApplication app (argc, argv);
        QLabel *label = new QLabel("Hello qt!", 0);
        app.setMainWidget(label);
        label -> show();
        return app.exec();
}
[fox@localhost qt]$ g++ helloqt.cpp -L/usr/X11R6/lib -lXext -lX11 -lm -lqt-mt
helloqt.cpp:1:26: qapplication.h: No such file or directory
helloqt.cpp:2:20: qlabel.h: No such file or directory
helloqt.cpp: In function `int main(int, char**)':
helloqt.cpp:6: error: `QApplication' undeclared (first use this function)
helloqt.cpp:6: error: (Each undeclared identifier is reported only once for each function it appears in.)
helloqt.cpp:6: error: syntax error before `(' token
helloqt.cpp:7: error: `QLabel' undeclared (first use this function)
helloqt.cpp:7: error: `label' undeclared (first use this function)
helloqt.cpp:7: error: syntax error before `(' token
helloqt.cpp:8: error: `app' undeclared (first use this function)
[fox@localhost qt]$
Спасибо сказали:
Аватара пользователя
shark3D
Сообщения: 37
ОС: Gentoo Linux

Re: не компилируются qt3 includes

Сообщение shark3D »

Нужно в таком случае не:

Код: Выделить всё

[fox@localhost qt]$ g++ helloqt.cpp -L/usr/X11R6/lib -lXext -lX11 -lm -lqt-mt


а:

Код: Выделить всё

[fox@localhost qt]$ g++ helloqt.cpp -L/usr/X11R6/lib -lXext -lX11 -lm -lqt-mt -I/usr/lib/qt3/include
Кто владеет ИНФОРМАЦИЕЙ - тот владеет МИРОМ
Спасибо сказали:
Аватара пользователя
powerfox
Сообщения: 458

Re: не компилируются qt3 includes

Сообщение powerfox »

shark3D писал(а):
10.10.2005 16:29
Нужно в таком случае не:

Код: Выделить всё

[fox@localhost qt]$ g++ helloqt.cpp -L/usr/X11R6/lib -lXext -lX11 -lm -lqt-mt


а:

Код: Выделить всё

[fox@localhost qt]$ g++ helloqt.cpp -L/usr/X11R6/lib -lXext -lX11 -lm -lqt-mt -I/usr/lib/qt3/include

Не пашет.
Спасибо сказали:
Smilo
Сообщения: 4

Re: не компилируются qt3 includes

Сообщение Smilo »

powerfox писал(а):
10.10.2005 18:32
shark3D писал(а):
10.10.2005 16:29

Нужно в таком случае не:

Код: Выделить всё

[fox@localhost qt]$ g++ helloqt.cpp -L/usr/X11R6/lib -lXext -lX11 -lm -lqt-mt


а:

Код: Выделить всё

[fox@localhost qt]$ g++ helloqt.cpp -L/usr/X11R6/lib -lXext -lX11 -lm -lqt-mt -I/usr/lib/qt3/include

Не пашет.


может и не пашет. надо тебе самому посмотреть, где лежать заголовки и прописать путь к ним.
у меня, например, они лежат не в /usr/lib/qt3/include, а в /usr/inlude/qt3
если не найдёшь заголовки -- то их надо поставить. но это совсем другая история :)
Спасибо сказали:
Аватара пользователя
powerfox
Сообщения: 458

Re: не компилируются qt3 includes

Сообщение powerfox »

Они у меня в /usr/lib/qt3/includes
Пробовал ставить qt-3.3.3 и компилировать g++ c "-extra-inkludes=/usr/lib/qt3/include" - то же самое, не пашет. Глючит зверюга :D
Спасибо сказали:
Smilo
Сообщения: 4

Re: не компилируются qt3 includes

Сообщение Smilo »

говорит-то что?
Спасибо сказали:
Аватара пользователя
powerfox
Сообщения: 458

Re: не компилируются qt3 includes

Сообщение powerfox »

То же самое: либо какую-то тарабарщину, либо не узнаёт классы qt. А инклюде находит, иначе бы написал, что не может найти файл. Сейчас времени немного, попробую сам ещё раз всё собрать.
Спасибо сказали:
Аватара пользователя
powerfox
Сообщения: 458

Re: не компилируются qt3 includes

Сообщение powerfox »

Очевидно лагает gcc: попробовал компайлить с SDL - проблемы в заголовочном файле stdio.h. Gjckt ecnfyjdrb 3.4.1(вместо 3.3.2). Вывод ошибок стал более вразумительный.
Спасибо сказали:
oakhead
Сообщения: 49

Re: не компилируются qt3 includes

Сообщение oakhead »

Доброе утро.
Не уверен в правильности синтаксиса:
-I/usr/lib/qt3//include

Два слэша-то зачем?
Спасибо сказали:
Аватара пользователя
powerfox
Сообщения: 458

Re: не компилируются qt3 includes

Сообщение powerfox »

oakhead писал(а):
20.10.2005 08:03
Доброе утро.
Не уверен в правильности синтаксиса:
-I/usr/lib/qt3//include

Два слэша-то зачем?

Слеши нипричём. Можно ставить хоть десять. А команды генерировал qmake, просто разработчики Mandrake при сборке в конечных директориях науказывали /, а во время сборки автоматически добавился второй.
Для успешной компиляции надо было добавлять '-lqt-mt'(или '-lqt')

Код: Выделить всё

g++ helloqt.cpp -I /usr/lib/qt3/include/ -L /usr/lib/qt3/lib/ -lqt-mt
Спасибо сказали: