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

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

Страниц: [1] 2   Вниз
  Печать  
Автор Тема: Проблема со сборкой библиотеки Qt 4.5.1 под МСВС  (Прочитано 7958 раз)
konstantin
Гость
« : Январь 17, 2012, 17:40 »

Здравствуйте!

Требуется написать кое-какую софтину на qt под МСВС. МСВС получил ввиде виртуального жесткого диска для VBOX.
МСВС версии 3.0. Вскрытие показало, что на него поставлена библиотека Qt 4.4.2. Еще стоит Designer. Решил поставить версию библиотеки посвежее. На форумах почитал, что народ собирал библиотеку 4.5.1 из исходников. Скачал исходники библиотеки и попробовал собрать по методике описанной в источнике: http://doc.crossplatform.ru/qt/4.5.0/install-x11.html
после выполнения команды make, gcc пыхтел несколько часов, после чего встал с ошибками:

mainwindow.cpp: In member function `virtual void
   MainWindow::paintEvent(QPaintEvent*)':
mainwindow.cpp:115: error: syntax error before `/' token
mainwindow.cpp:115: error: no matching function for call to `QLinearGradient::
   QLinearGradient(int, int)'
../../../src/gui/painting/qbrush.h:263: error: candidates are:
   QLinearGradient::QLinearGradient(const QLinearGradient&)
../../../src/gui/painting/qbrush.h:267: error:
   QLinearGradient::QLinearGradient(double, double, double, double)
../../../src/gui/painting/qbrush.h:266: error:
   QLinearGradient::QLinearGradient(const QPointF&, const QPointF&)
../../../src/gui/painting/qbrush.h:265: error:
   QLinearGradient::QLinearGradient()
mainwindow.cpp:115: error: syntax error before `)' token
mainwindow.cpp:117: error: request for member `setColorAt' in `gradient', which
   is of non-aggregate type `QLinearGradient ()(...)'
mainwindow.cpp:118: error: request for member `setColorAt' in `gradient', which
   is of non-aggregate type `QLinearGradient ()(...)'
mainwindow.cpp:119: error: request for member `setColorAt' in `gradient', which
   is of non-aggregate type `QLinearGradient ()(...)'
mainwindow.cpp:122: error: invalid conversion from `QLinearGradient (*)(...)'
   to `unsigned int'
mainwindow.cpp:122: error:   initializing argument 1 of `
   QColor::QColor(unsigned int)'
mainwindow.cpp:133: error: no match for call to `(QLinearGradient) (int, int)'
make[3]: *** [.obj/release-shared/mainwindow.o] ошибка 1
make[3]: Leaving directory `/tmp/qt-x11-opensource-src-4.5.1/examples/xmlpatterns/trafficinfo'
make[2]: *** [sub-trafficinfo-make_default] ошибка 2
make[2]: Leaving directory `/tmp/qt-x11-opensource-src-4.5.1/examples/xmlpatterns'
make[1]: *** [sub-xmlpatterns-make_default] ошибка 2
make[1]: Leaving directory `/tmp/qt-x11-opensource-src-4.5.1/examples'
make: *** [sub-examples-make_default-ordered] ошибка 2
[root@mcbc_3_2 qt-x11-opensource-src-4.5.1]# 

gcc версии 2.95

Подскажите, что не так???
Записан
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4744



Просмотр профиля WWW
« Ответ #1 : Январь 17, 2012, 18:56 »

в строке конфигурации укажи -nomake examples (ещё можно -nomake demos) чтобы не собирать примеры.

и я не совсем понял при чём тут gcc, если ты собираешь для студии.

p.s. использовать студию 3 (2003 .НЕТ я так понимаю) - извращенцы ещё те Улыбающийся
Записан

Изучением C++ вымощена дорога в Qt.

UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
Hellraiser
Бывалый
*****
Offline Offline

Сообщений: 451


Просмотр профиля
« Ответ #2 : Январь 17, 2012, 20:45 »

МСВС - это не MSVS, это Мобильная Система Вооруженных Сил, или по-простому, Линух со старым ядром и урезанными возможностями. А по делу - 4-ю версию надо собирать с gcc 3-й версии и более. Для этого надо переключать компилятор. Как, сейчас на память не вспомнить (МСВС растаяла как страшный сон), но на форуме такие топики были.
Записан
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4744



Просмотр профиля WWW
« Ответ #3 : Январь 17, 2012, 21:10 »

оу, вот оно что. то-то я еще думаю - при чем там линуксовая командная строка Улыбающийся

в любом случае, у автора вылазит ошибка при компилировании примеров, а ведь они компилируются уже после самой библиотеки, да?
Записан

Изучением C++ вымощена дорога в Qt.

UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
Hellraiser
Бывалый
*****
Offline Offline

Сообщений: 451


Просмотр профиля
« Ответ #4 : Январь 17, 2012, 21:20 »

Может по инклюдам и либам цепляться к старой версии, там еще надо пошаманить с окружением. Немного оффтопа - какой смысл ставить версию Кьюта, отличный от системного? Такое приложение не пройдет сертификацию, а если просто самому захотелось побаловаться - то имхо не та система, очень отдает садо-мазо.
Записан
LisandreL
Птица говорун
*****
Offline Offline

Сообщений: 984


Надо улыбаться


Просмотр профиля
« Ответ #5 : Январь 17, 2012, 23:19 »

Немного оффтопа - какой смысл ставить версию Кьюта, отличный от системного? Такое приложение не пройдет сертификацию, а если просто самому захотелось побаловаться - то имхо не та система, очень отдает садо-мазо.
При статичской линковке скомпилированный исполняемый файл будет работать на чистой МСВС. Слышал чт с этим можно пройти сертификацию (хотя опыта не было).
Ну и если верить вики, то в теперешних версиях вообще 4.6.3.
Записан
konstantin
Гость
« Ответ #6 : Январь 19, 2012, 09:48 »

Начинаю приходить к выводу, что проще использовать версию библтотек, которая стоит по умолчанию.
Народ, а как пришпилить к библиотеке 4.4.2 Creator?
Записан
Hellraiser
Бывалый
*****
Offline Offline

Сообщений: 451


Просмотр профиля
« Ответ #7 : Январь 19, 2012, 10:28 »

Насчет креатора не подскажу, возможно без бубна и никак, т.к. он завязан на конкретные версии библиотек Кьюта. Поступай проще - скачай нужную версию под вижуал студию, лучше 2005, создай и отладь полностью проект в ней. Как все будет готово - перекодируй в КОИ-8 исходники (если пользовался русскими строками и комментами), концы строк преобразуй в линуксовый (Notepad++ тебе в помощь), перетащи проект в МСВС, компилируй в командной строке и усе. Не забываем о именах файлов в проекте и инклюдах (Линукс регистрозависимый, в отличии от винды).
Записан
mutineer
Гость
« Ответ #8 : Январь 19, 2012, 11:25 »

В криейторе выбираешь Инструменты - Параметры - Qt4 - Профили Qt - Нажимаешь + - вписываешь название и указываешь путь к нужному qmake

Теперь при создании/открытии проекта можно указать для какий кутей его собирать.
Для разных версий криейтора местонахождение настройки может меняться
Записан
konstantin
Гость
« Ответ #9 : Январь 19, 2012, 13:16 »

Поставил Creator 1.2.1. В окошко настройки версии qt добавил путь: /usr/lib/qt4/bin/
Создал проект, попробовал собрать. Выдает ошибку: "Не выбрана корректная версия Qt..."
Записан
mutineer
Гость
« Ответ #10 : Январь 19, 2012, 13:18 »

попробуй /usr/lib/qt4/bin/qmake вписать
Записан
konstantin
Гость
« Ответ #11 : Январь 19, 2012, 13:50 »

Автоопределение нормально заработало)
« Последнее редактирование: Январь 19, 2012, 14:06 от konstantin » Записан
konstantin
Гость
« Ответ #12 : Январь 20, 2012, 10:11 »

Возник еще один интересный момент. Не собирается библиотека qextserialport. Сначала не смог отыскать пару заголовочных файлов. Закомментировал строки включения, начал ругаться на то, что не может найти некоторые поля в определенной структуре...
Записан
kuzulis
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2812


Просмотр профиля
« Ответ #13 : Январь 20, 2012, 11:30 »

Цитата: kambala
в строке конфигурации укажи -nomake examples (ещё можно -nomake demos) чтобы не собирать примеры.
Не, для *nix это не работает вроде.
Вместо этого надо в исходниках самой Qt править файл проекта - закомментировать
сборку этих субпроектов:
Цитировать
...
    } else:isEqual(PROJECT, examples) {
       #SUBDIRS += examples
    } else:isEqual(PROJECT, demos) {
       #SUBDIRS += demos
    } else:isEqual(PROJECT, libs) {
...

Цитата: konstantin
Возник еще один интересный момент. Не собирается библиотека qextserialport. Сначала не смог отыскать пару заголовочных файлов. Закомментировал строки включения, начал ругаться на то, что не может найти некоторые поля в определенной структуре...
Ну так исходники то открыты.

Попробуй другую либу http://gitorious.org/qserialdevice/qserialdevice/trees/2.0
Если ты делаешь проект в МСВС именно для МО, а не просто так - то я подскажу если чо по этой либе!
Я заинтересован в обороноспособности родимой страны! Улыбающийся

А если делаешь просто так - то сам разбирайся!
« Последнее редактирование: Январь 20, 2012, 11:31 от kuzulis » Записан

ArchLinux x86_64 / Win10 64 bit
konstantin
Гость
« Ответ #14 : Январь 20, 2012, 11:52 »

Спасибо конечно, но с qextserialport я уже работал и хотелось бы использовать ее.

Вот что выдается при сборке:
Запускается: /usr/bin/qmake4 /root/QtProjects/serial/qextserialport-1.2win-alpha/qextserialport.pro -spec /usr/lib/qt4/mkspecs/linux-g++ -r CONFIG+=debug
Завершено с кодом возврата 0.
Запускается: /usr/bin/make -w
make: Entering directory `/root/QtProjects/serial/qextserialport-1.2win-alpha'
/usr/bin/make -f Makefile.Debug
make[1]: Entering directory `/root/QtProjects/serial/qextserialport-1.2win-alpha'
g++ -c -pipe -g -D_REENTRANT -Wall -W -fPIC -D_TTY_POSIX_ -DQT_CORE_LIB -DQT_SHARED -I/usr/lib/qt4/mkspecs/linux-g++ -I. -I/usr/lib/qt4/include/QtCore -I/usr/lib/qt4/include/QtCore -I/usr/lib/qt4/include -Ibuild/moc -I. -o build/obj/qextserialenumerator.o qextserialenumerator.cpp
qextserialenumerator.cpp:9:21: objbase.h: Нет такого файла или каталога
qextserialenumerator.cpp:10:22: initguid.h: Нет такого файла или каталога

В гуглях няшел подобную проблему, но не понял, как она решается:
http://groups.google.com/group/qextserialport/browse_thread/thread/be70140c383bf388?pli=1
« Последнее редактирование: Январь 20, 2012, 12:18 от konstantin » Записан
Страниц: [1] 2   Вверх
  Печать  
 
Перейти в:  


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