Модераторы: Daevaorn

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Хееелп ми! Code::Blocks + QT, Что-то лыжи не едут 
:(
    Опции темы
JavaCraft
Дата 31.8.2007, 14:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 139
Регистрация: 8.2.2007

Репутация: нет
Всего: 1



Что-то затрудняюсь прикрутить QT к Code::Blocks. Всё самых последних версий.
QT установлена и сконфигурирована по прилагаемой инструкции.
Ругнулась на компилятор MinGW, дескать граната не той системы "поддерживается 3....", а у меня 5.1.3.
Я проигнорировал предупреждение, подумал, что и этот сойдет. Просто пути к нему прописал.
MinGW установлен по интернету один из последних  (5.1.3)
Пути добавлены в Path, перезагружался.
По умолчанию в Code::Blocks используется GCC(G++ в списке нет). В опциях еще где-то упоминается что используется g++.
Code::Blocks ночной билд уже имеет плагин QT, пути, где нашел незаполненные поля, прописал вручную.
Вроде бы Code::Blocks(с плагином) должен сам вызывать qmake и генерить правильный Makefile.
Во всяком случае, я не нашел, где и как ему нужно это задать вручную.
Однако, я сравниваю его Makefile c результатом работы QDevelop и они очень сильно не похожи.

Создаю пустой QT4 проект в папках примеров qt\examples\...\..., добавляю туда C++ и h фалы.
Больше ничего не делаю.
При сборке получаю ошибку типа такой

"hellogl - Release" uses an invalid compiler. Skipping...
Nothing to be done.
Nothing to be done.

Как указать правильный компилятор не понимаю, и так всё уже указано.
PM MAIL   Вверх
Daevaorn
Дата 31.8.2007, 14:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2155
Регистрация: 29.11.2004
Где: Москва

Репутация: 51
Всего: 70



Цитата(JavaCraft @  31.8.2007,  15:20 Найти цитируемый пост)
Ругнулась на компилятор MinGW, дескать граната не той системы "поддерживается 3....", а у меня 5.1.3.


Цитата(JavaCraft @  31.8.2007,  15:20 Найти цитируемый пост)
"hellogl - Release" uses an invalid compiler. Skipping...

всё сходится
PM MAIL WWW   Вверх
JavaCraft
Дата 31.8.2007, 14:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 139
Регистрация: 8.2.2007

Репутация: нет
Всего: 1



Не факт. Чего это вдруг, такая жесткая привязка к древней, как [censored33! Пожалуйста, соблюдайте элементарные правила приличия при общении на форуме] мамонта версии?
Если QT так зависит от версии компилятора, то как ОНО
вообще может собираться с НУЖНЫМ МНЕ компилятором на НУЖНОЙ МНЕ платформе?
Времена меняются компиляторы обновляются, совместимость должна сохраняться.
Во всяком случае, регулярная установка последних стабильных версий любого ПО
как для никсов так и для винды это как правило хорошего тона. 


И еще непонятки.
Как в Code::Blocks использовать файлы QT-проектов *.pro?
При конфигурировании QT эти фалы используются, что видно из листинга.

Это сообщение отредактировал(а) JavaCraft - 31.8.2007, 14:57
PM MAIL   Вверх
JavaCraft
Дата 31.8.2007, 16:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 139
Регистрация: 8.2.2007

Репутация: нет
Всего: 1



В общем не понятно зачем распространяется MinGW 5.1.3  и что с ним делать?

Убрал из Path путь к последней версии.
В Code::Blocks указал путь к его собственной версии MinGW, идущей в поставке и не совпадающей с требуемой для QT.
Лыжи поехали.

Теперь новая ошибка. Не понимает имена файлов.h без раширения
На строке 
#include <QGLWidget>
ошибка
:: === hellogl, Release ===
C:\dev\lib\Qt\4.2.3\examples\opengl\hellogl\glwidget.h:27: QGLWidget: No such file or directory
и т.д.

Изменять код примера, категорически не нужно.
Пути к qt\...\include, прописаны.

PM MAIL   Вверх
bsa
Дата 31.8.2007, 16:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 63
Всего: 196



надо их дальше прописывать к дерикториям в include
PM   Вверх
JavaCraft
Дата 31.8.2007, 16:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 139
Регистрация: 8.2.2007

Репутация: нет
Всего: 1



Да, это так! ((
Но ведь их много и это скучно.

Может есть опция, заставляющая искать во вложенных папках?
PM MAIL   Вверх
bsa
Дата 31.8.2007, 16:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 63
Всего: 196



думаю, нет.
PM   Вверх
Daevaorn
Дата 31.8.2007, 17:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2155
Регистрация: 29.11.2004
Где: Москва

Репутация: 51
Всего: 70



Цитата(JavaCraft @  31.8.2007,  15:39 Найти цитируемый пост)
Если QT так зависит от версии компилятора, то как ОНО
вообще может собираться с НУЖНЫМ МНЕ компилятором на НУЖНОЙ МНЕ платформе?
Времена меняются компиляторы обновляются, совместимость должна сохраняться.
Во всяком случае, регулярная установка последних стабильных версий любого ПО
как для никсов так и для винды это как правило хорошего тона. 

Все эти рассуждения бессмыслены. QT от этого не заработает.
PM MAIL WWW   Вверх
JavaCraft
Дата 31.8.2007, 17:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 139
Регистрация: 8.2.2007

Репутация: нет
Всего: 1



Цитата(Daevaorn @  31.8.2007,  17:00 Найти цитируемый пост)
QT от этого не заработает. 

Согласен, но как его заставить? С MinGW проехали, сейчас я использую ту версию, которая идет с Code::Blocks.
С проблемой с путями к хедерам тоже разобрался.

Основная проблема в другом.
Как заставить Code::Blocks при работе с QT выполнять действия аналогичные QDevelop, чтобы Makefiles
получались идентичные или хотя бы приблизительно похожие?

Вот к примеру, что он мне выдает при линковке сейчас...
Очевидно, проблема с g++, лечится опциями, но какими?
Может быть qmake не отработал, который должен всё это настраивать?

-------------- Build: Release in hellogl ---------------
Compiling: main.cpp
Compiling: window.cpp
Compiling: glwidget.cpp
Linking executable: bin\Release\hellogl.exe
obj\Release\main.o:main.cpp:(.text+0xc9): undefined reference to `vtable for Window'
obj\Release\main.o:main.cpp:(.text+0xd5): undefined reference to `vtable for Window'
obj\Release\main.o:main.cpp:(.text+0x131): undefined reference to `vtable for Window'
obj\Release\main.o:main.cpp:(.text+0x13d): undefined reference to `vtable for Window'
obj\Release\window.o:window.cpp:(.text+0x198): undefined reference to `vtable for Window'
obj\Release\window.o:window.cpp:(.text+0x19f): more undefined references to `vtable for Window' follow
obj\Release\window.o:window.cpp:(.text+0x689): undefined reference to `Window::staticMetaObject'
obj\Release\window.o:window.cpp:(.text+0x858): undefined reference to `vtable for Window'
obj\Release\window.o:window.cpp:(.text+0x85f): undefined reference to `vtable for Window'
obj\Release\window.o:window.cpp:(.text+0xd49): undefined reference to `Window::staticMetaObject'
obj\Release\glwidget.o:glwidget.cpp:(.text+0x53): undefined reference to `_imp___ZN9QGLWidgetC2EP7QWidgetPKS_6QFlagsIN2Qt10WindowTypeEE'
obj\Release\glwidget.o:glwidget.cpp:(.text+0x70): undefined reference to `vtable for GLWidget'
obj\Release\glwidget.o:glwidget.cpp:(.text+0x77): undefined reference to `vtable for GLWidget'
obj\Release\glwidget.o:glwidget.cpp:(.text+0x1b2): undefined reference to `_imp___ZN9QGLWidgetD2Ev'
obj\Release\glwidget.o:glwidget.cpp:(.text+0x223): undefined reference to `_imp___ZN9QGLWidgetC2EP7QWidgetPKS_6QFlagsIN2Qt10WindowTypeEE'
obj\Release\glwidget.o:glwidget.cpp:(.text+0x240): undefined reference to `vtable for GLWidget'
obj\Release\glwidget.o:glwidget.cpp:(.text+0x247): undefined reference to `vtable for GLWidget'
obj\Release\glwidget.o:glwidget.cpp:(.text+0x382): undefined reference to `_imp___ZN9QGLWidgetD2Ev'
obj\Release\glwidget.o:glwidget.cpp:(.text+0x3e3): undefined reference to `vtable for GLWidget'
obj\Release\glwidget.o:glwidget.cpp:(.text+0x3ea): undefined reference to `vtable for GLWidget'
obj\Release\glwidget.o:glwidget.cpp:(.text+0x3ef): undefined reference to `_imp___ZN9QGLWidget11makeCurrentEv'
obj\Release\glwidget.o:glwidget.cpp:(.text+0x412): undefined reference to `glDeleteLists@8'
obj\Release\glwidget.o:glwidget.cpp:(.text+0x425): undefined reference to `_imp___ZN9QGLWidgetD2Ev'
obj\Release\glwidget.o:glwidget.cpp:(.text+0x458): undefined reference to `_imp___ZN9QGLWidgetD2Ev'
obj\Release\glwidget.o:glwidget.cpp:(.text+0x4c3): undefined reference to `vtable for GLWidget'
obj\Release\glwidget.o:glwidget.cpp:(.text+0x4ca): undefined reference to `vtable for GLWidget'
obj\Release\glwidget.o:glwidget.cpp:(.text+0x4cf): undefined reference to `_imp___ZN9QGLWidget11makeCurrentEv'
obj\Release\glwidget.o:glwidget.cpp:(.text+0x4f2): undefined reference to `glDeleteLists@8'
obj\Release\glwidget.o:glwidget.cpp:(.text+0x505): undefined reference to `_imp___ZN9QGLWidgetD2Ev'
obj\Release\glwidget.o:glwidget.cpp:(.text+0x538): undefined reference to `_imp___ZN9QGLWidgetD2Ev'
obj\Release\glwidget.o:glwidget.cpp:(.text+0x5a3): undefined reference to `vtable for GLWidget'
obj\Release\glwidget.o:glwidget.cpp:(.text+0x5aa): undefined reference to `vtable for GLWidget'
obj\Release\glwidget.o:glwidget.cpp:(.text+0x5af): undefined reference to `_imp___ZN9QGLWidget11makeCurrentEv'
obj\Release\glwidget.o:glwidget.cpp:(.text+0x5d2): undefined reference to `glDeleteLists@8'
obj\Release\glwidget.o:glwidget.cpp:(.text+0x5e5): undefined reference to `_imp___ZN9QGLWidgetD2Ev'
obj\Release\glwidget.o:glwidget.cpp:(.text+0x623): undefined reference to `_imp___ZN9QGLWidgetD2Ev'
obj\Release\glwidget.o:glwidget.cpp:(.text+0x724): undefined reference to `GLWidget::xRotationChanged(int)'
obj\Release\glwidget.o:glwidget.cpp:(.text+0x794): undefined reference to `GLWidget::yRotationChanged(int)'
obj\Release\glwidget.o:glwidget.cpp:(.text+0x804): undefined reference to `GLWidget::zRotationChanged(int)'
obj\Release\glwidget.o:glwidget.cpp:(.text+0x842): undefined reference to `glClear@4'
obj\Release\glwidget.o:glwidget.cpp:(.text+0x84a): undefined reference to `glLoadIdentity@0'
obj\Release\glwidget.o:glwidget.cpp:(.text+0x877): undefined reference to `glTranslated@24'
obj\Release\glwidget.o:glwidget.cpp:(.text+0x8b2): undefined reference to `glRotated@32'
obj\Release\glwidget.o:glwidget.cpp:(.text+0x8ed): undefined reference to `glRotated@32'
obj\Release\glwidget.o:glwidget.cpp:(.text+0x928): undefined reference to `glRotated@32'
obj\Release\glwidget.o:glwidget.cpp:(.text+0x936): undefined reference to `glCallList@4'
obj\Release\glwidget.o:glwidget.cpp:(.text+0x993): undefined reference to `glViewport@16'
obj\Release\glwidget.o:glwidget.cpp:(.text+0x9a2): undefined reference to `glMatrixMode@4'
obj\Release\glwidget.o:glwidget.cpp:(.text+0x9aa): undefined reference to `glLoadIdentity@0'
obj\Release\glwidget.o:glwidget.cpp:(.text+0x9ea): undefined reference to `glOrtho@48'
obj\Release\glwidget.o:glwidget.cpp:(.text+0x9f9): undefined reference to `glMatrixMode@4'
Process terminated with status 1 (0 minutes, 12 seconds)
50 errors, 0 warnings
 


PM MAIL   Вверх
Daevaorn
Дата 31.8.2007, 17:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2155
Регистрация: 29.11.2004
Где: Москва

Репутация: 51
Всего: 70



Линкер не находит библиотеки. Проверяй пути к ним.
И читай доку, быстрее найдешь решение.
PM MAIL WWW   Вверх
JavaCraft
Дата 31.8.2007, 18:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 139
Регистрация: 8.2.2007

Репутация: нет
Всего: 1



Цитата(Daevaorn @  31.8.2007,  17:35 Найти цитируемый пост)
Линкер не находит библиотеки

Какие библиотеки линковать? Я пытаюсь собрать с DLL. Пути к lib и bin прописаны.
Статические и динамические библиотеки имеются.
При отсутсвии DLL, ошибки, наверное, должны быть на этапе исполнения.


Цитата(Daevaorn @  31.8.2007,  17:35 Найти цитируемый пост)
И читай доку

В какой доке про это написано?

PM MAIL   Вверх
bsa
Дата 31.8.2007, 20:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 63
Всего: 196



JavaCraft, вообще-то линковщику нужно указать какие библиотеки нужно будет использовать. Это делается в настройках проекта. В твоем случае нужно указать, как минимум QtOpenGL, Qtgui и QtCore
PM   Вверх
JavaCraft
Дата 3.9.2007, 11:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 139
Регистрация: 8.2.2007

Репутация: нет
Всего: 1



Цитата(bsa @  31.8.2007,  20:02 Найти цитируемый пост)
JavaCraft, вообще-то линковщику нужно указать какие библиотеки нужно будет использовать. Это делается в настройках проекта. В твоем случае нужно указать, как минимум QtOpenGL, Qtgui и QtCore 


Это я сделал, а именно, в Release и Debug / Project Build Options / Linker Settings
Перечислил эти DLL с полными путями.

Ошибка осталась таже самая. smile 

Вопрос открыт. Как с наименьшими рутинными настройками (или вообще без них),
используя преимущества IDE и информацию из иерархии файлов проектов *.pro,
интегрировать библиотеку QT в Code::Blocks, который уже имеет QT-плагин?

Это сообщение отредактировал(а) JavaCraft - 3.9.2007, 11:54
PM MAIL   Вверх
bsa
Дата 3.9.2007, 12:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 63
Всего: 196



JavaCraft, ты вообще когда-нибудь читаешь документацию?
1. Не надо указывать полные пути к либам (иначе проект будет непереносим на другие компы).
2. Надо указать в опциях линкера (в настройках среды, не проекта) директории, в которых расположены *.lib или *.a файлы, а не *.DLL!!!
3. Надо в опциях линкера (в настройках проекта) перечислить названия библиотек, без указания префикса lib.
PM   Вверх
JavaCraft
Дата 3.9.2007, 13:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 139
Регистрация: 8.2.2007

Репутация: нет
Всего: 1



Цитата(bsa @  3.9.2007,  12:24 Найти цитируемый пост)
JavaCraft, ты вообще когда-нибудь читаешь документацию?
1. Не надо указывать полные пути к либам (иначе проект будет непереносим на другие компы).
2. Надо указать в опциях линкера (в настройках среды, не проекта) директории, в которых расположены *.lib или *.a файлы, а не *.DLL!!!
3. Надо в опциях линкера (в настройках проекта) перечислить названия библиотек, без указания префикса lib. 


1. Я и не указывал, и указывал, ничего не изменилось. Сейчас это не важно, пусть соберет хотя бы с абсолютными путями. Разницу я понимаю.

2.В "настройках среды", точнее в Global Compiler Settings / Search Directories /

Compiler - перечислил все пути к инклюдам, в том числе каждую папку каждой библиотеки QT (C:\dev\lib\Qt\4.2.3\include\QtOpenGL). Пути абсолютные, но пока это не важно.

Linker - перечислил пути к папкам lib и bin. Вообще то я не понимаю зачем нужны статические библиотеки, когда мне нужно собрать проект с динамическими библиотеками.
В паке lib содержатся только *.a и *.prl
в папке bin содержатся *.dll и прочее

3. Всяко пробовал. Сейчас сделал именно так - перечислил в свойствах проекта в опциях линкера нужные либы без путей и без расширений

Попытался пересобрать пример.
Ничего не изменилось. Тот-же листинг ошибок.

ps. Makefile даже не создается

ps.ps. QT конфигурировалась с опциями
configure.exe -release -shared -plugin-sql-sqlite -plugin-sql-odbc -qt-zlib -qt-gif -qt-libpng -qt-libmng -qt-libjpeg
Результат вроде бы нормальный.
переменная QMAKESPEC = win32-g++
PATH = ... c:\....\QT\4.2.3\bin

Это сообщение отредактировал(а) JavaCraft - 3.9.2007, 13:27
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0576 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.