![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| JavaCraft |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 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. Как указать правильный компилятор не понимаю, и так всё уже указано. |
|||
|
||||
| Daevaorn |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2155 Регистрация: 29.11.2004 Где: Москва Репутация: 51 Всего: 70 |
||||
|
||||
| JavaCraft |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 139 Регистрация: 8.2.2007 Репутация: нет Всего: 1 |
Не факт. Чего это вдруг, такая жесткая привязка к древней, как [censored33! Пожалуйста, соблюдайте элементарные правила приличия при общении на форуме] мамонта версии?
Если QT так зависит от версии компилятора, то как ОНО вообще может собираться с НУЖНЫМ МНЕ компилятором на НУЖНОЙ МНЕ платформе? Времена меняются компиляторы обновляются, совместимость должна сохраняться. Во всяком случае, регулярная установка последних стабильных версий любого ПО как для никсов так и для винды это как правило хорошего тона. И еще непонятки. Как в Code::Blocks использовать файлы QT-проектов *.pro? При конфигурировании QT эти фалы используются, что видно из листинга. Это сообщение отредактировал(а) JavaCraft - 31.8.2007, 14:57 |
|||
|
||||
| JavaCraft |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 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, прописаны. |
|||
|
||||
| bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 63 Всего: 196 |
надо их дальше прописывать к дерикториям в include
|
|||
|
||||
| JavaCraft |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 139 Регистрация: 8.2.2007 Репутация: нет Всего: 1 |
Да, это так! ((
Но ведь их много и это скучно. Может есть опция, заставляющая искать во вложенных папках? |
|||
|
||||
| bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 63 Всего: 196 |
думаю, нет.
|
|||
|
||||
| Daevaorn |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2155 Регистрация: 29.11.2004 Где: Москва Репутация: 51 Всего: 70 |
Все эти рассуждения бессмыслены. QT от этого не заработает. |
|||
|
||||
| JavaCraft |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 139 Регистрация: 8.2.2007 Репутация: нет Всего: 1 |
Согласен, но как его заставить? С 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 |
|||
|
||||
| Daevaorn |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2155 Регистрация: 29.11.2004 Где: Москва Репутация: 51 Всего: 70 |
Линкер не находит библиотеки. Проверяй пути к ним.
И читай доку, быстрее найдешь решение. |
|||
|
||||
| JavaCraft |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 139 Регистрация: 8.2.2007 Репутация: нет Всего: 1 |
Какие библиотеки линковать? Я пытаюсь собрать с DLL. Пути к lib и bin прописаны. Статические и динамические библиотеки имеются. При отсутсвии DLL, ошибки, наверное, должны быть на этапе исполнения. В какой доке про это написано? |
|||
|
||||
| bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 63 Всего: 196 |
JavaCraft, вообще-то линковщику нужно указать какие библиотеки нужно будет использовать. Это делается в настройках проекта. В твоем случае нужно указать, как минимум QtOpenGL, Qtgui и QtCore
|
|||
|
||||
| JavaCraft |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 139 Регистрация: 8.2.2007 Репутация: нет Всего: 1 |
Это я сделал, а именно, в Release и Debug / Project Build Options / Linker Settings Перечислил эти DLL с полными путями. Ошибка осталась таже самая. Вопрос открыт. Как с наименьшими рутинными настройками (или вообще без них), используя преимущества IDE и информацию из иерархии файлов проектов *.pro, интегрировать библиотеку QT в Code::Blocks, который уже имеет QT-плагин? Это сообщение отредактировал(а) JavaCraft - 3.9.2007, 11:54 |
|||
|
||||
| bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 63 Всего: 196 |
JavaCraft, ты вообще когда-нибудь читаешь документацию?
1. Не надо указывать полные пути к либам (иначе проект будет непереносим на другие компы). 2. Надо указать в опциях линкера (в настройках среды, не проекта) директории, в которых расположены *.lib или *.a файлы, а не *.DLL!!! 3. Надо в опциях линкера (в настройках проекта) перечислить названия библиотек, без указания префикса lib. |
|||
|
||||
| JavaCraft |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 139 Регистрация: 8.2.2007 Репутация: нет Всего: 1 |
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 |
|||
|
||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |