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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: Компиляция Qt-3.3.3 Приложение Hello!!! Не линкуется.  (Прочитано 5065 раз)
a_n_y_a
Гость
« : Апрель 06, 2009, 14:12 »

Есть программка:

Код
C++ (Qt)
#include <qapplication.h>
#include <qlabel.h>
int main(int argc, char *argv[])
{
   QApplication app(argc, argv);
   return app.exec();
}

Выдает следующее:
[root@localhost Hello]# qmake -project
[root@localhost Hello]# qmake Hello.pro
[root@localhost Hello]# make
g++ -c -pipe -D_REENTRANT -Wall -W  -DQT_NO_DEBUG -I/usr/lib/qt-3.3.3/mkspecs/default -I. -I. -I/usr/lib/qt-3.3.3/include -o Hello.o Hello.cpp
g++  -o Hello Hello.o    -L/usr/lib/qt-3.3.3/lib -L/usr/X11R6/lib -lqt -lXext -lX11 -lm
Hello.o(.text+0x20): In function `main':
: undefined reference to `QApplication::QApplication[in-charge](int&, char**)'
Hello.o(.text+0x2f): In function `main':
: undefined reference to `QApplication::exec()'

И так далее. В чем проблемка? Только что поставил Qt3.3.3 на MC BC 3.0
Поставилось без проблем. Решил провермть элементарной программкой.
« Последнее редактирование: Апрель 09, 2009, 17:28 от pastor » Записан
a_n_y_a
Гость
« Ответ #1 : Апрель 07, 2009, 14:59 »

Всем спасибо за помощь, разобрался. Дело было в версии gcc.
Записан
a_n_y_a
Гость
« Ответ #2 : Апрель 08, 2009, 08:33 »

Работаю в  Ос МС ВС 3.0
   Тестирую компилятор на элементарной програмке Hello.
#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();
}
Сначала перехожу на транслятор 2.95, все компилится, собирается и работает:
[root@localhost ~]# gccv2
[root@localhost ~]# cd /usr/Hello
[root@localhost Hello]# qmake -project
[root@localhost Hello]# qmake Hello.pro
[root@localhost Hello]# make
/usr/lib/qt-3.3.3/include -o Hello.o Hello.cpp
g++  -o Hello Hello.o    -L/usr/lib/qt-3.3.3/lib -L/usr/X11R6/lib -lqt -lXext -lX11 -lm

Потом перехожу на транслятор 3.3, произвожу те же действия, но программка не линкуется:
Что я сделал не правильно?
[root@localhost Hello]# gccv3
[root@localhost Hello]# qmake -project
[root@localhost Hello]# qmake Hello.pro
[root@localhost Hello]# make
/usr/lib/qt-3.3.3/include -o Hello.o Hello.cpp
g++  -o Hello Hello.o    -L/usr/lib/qt-3.3.3/lib -L/usr/X11R6/lib -lqt -lXext -lX11 -lm
Hello.o(.text+0x23): In function `main':
: undefined reference to `QApplication::QApplication[in-charge](int&, char**)'
Hello.o(.text+0x57): In function `main':
: undefined reference to `QString::QString[in-charge](char const*)'
Hello.o(.text+0x66): In function `main':
: undefined reference to `QLabel::QLabel[in-charge](QString const&, QWidget*, char const*, unsigned)'                   
и так далее.
Записан
Rcus
Гость
« Ответ #3 : Апрель 08, 2009, 08:52 »

А Qt пересобрать под другую версию компилятора? Насколько модули собранные разными мажорными версиями GCC бинарно несовместимы.
Записан
a_n_y_a
Гость
« Ответ #4 : Апрель 09, 2009, 08:25 »

А Qt пересобрать под другую версию компилятора? Насколько модули собранные разными мажорными версиями GCC бинарно несовместимы.

Собрать другую версию библиотеки не удается. Смотри тему
Установка на MC BC 3.0 Qt4.4.1, не конфигурируется
Записан
Примерный ученик
Бывалый
*****
Offline Offline

Сообщений: 450


И это не всегда помогает


Просмотр профиля
« Ответ #5 : Апрель 09, 2009, 17:23 »

А Qt пересобрать под другую версию компилятора? Насколько модули собранные разными мажорными версиями GCC бинарно несовместимы.

Собрать другую версию библиотеки не удается. Смотри тему
Установка на MC BC 3.0 Qt4.4.1, не конфигурируется

Прочитайте внимательно Readme.txt из установочного диска MCВС
\MCBC\RPMS\extools

Цитирую:

Следует учитывать тот факт, что компиляторы gcc 2.95.4 и gcc 3.3.2 имеют
различия в ABI (трансляции имен) для языка программирования C++. Что приводит
к затруднению совместного использования объектного кода написанного на C++
и собранного под компиляторами разных версий.

     Поскольку ОС МСВС 3.0 собрана на компиляторе gcc 2.95.4, существующие
системные библиотеки разработанные на языке C++ будут иметь проблемы при
связывании с программами вновь разрабатываемыми при помощи gcc 3.3.2.

     Для выхода из данной ситуации предлагается, при использовании gcc 3.3.2
разрабатывать автономные (самодостаточные) проекты C++, либо дополнительно
создавать и использовать библиотеки-прослойки (wrappers) для обращения к
необходимым системным функциям C++ из состава ОС МСВС 3.0.

    Естественно, что функции стандартной библиотеки C++ для gcc 3.3.2 будут
доступны без каких бы то ни было ограничений, поскольку для компиляторов
gcc 2.95.4 и gcc 3.3.2 они уникальны и обе поставляются в составе ОС МСВС 3.0

     При сборке программ на "чистом" C проблем возникать не должно.
Записан

Как мало времени и как много нужно узнать
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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