Название: Qt 4.5 не хочет со мной дружить
Отправлено: SABROG от Март 07, 2009, 12:52
Расскажу с самого начала. На работе у меня стоит Win2k SP4. Я качал несколько раз QtCreator полную сборку с исходниками и скомпиленными библиотеками (порядка 200Мб). Сам QtCreator работать отказывался на этой ОС, крашился то при запуске, то в любое другое ему удобное время. В результате я использовал исходники Qt и библиотеки идущие вместе с ним через консоль и vim. Через какое-то время мне понадобилось собрать пример с использованием phonon, чтобы подтвердить утечку памяти в этом модуле. Как оказалось QtCreator идет без собранного phonon... Тогда я не стал предпринимать каких-то попыток его собрать. Вышел Qt 4.5. Я скачал SDK, но обнаружил все ту же проблему с крашами QtCreator'a. Как потом показал отладчик проблема затаилась в классе QWizard модуля QtGui4. Т.е. проблема, видимо, в том, что исходники собирали под ОС выше Win2k (в Vista'e я так думаю). Естественно встал вопрос о ручной компиляции исходников Qt 4.5 и затем QtCreator'a на базе скомпиленных библиотек. Я забрал сорцы QtCreator'a через git и скачал snapshot Qt 4.5 с троллевского ftp. Чтобы скомпилить исходники я задал такую конфигурацию: configure -debug-and-release -qt-sql-sqlite -qt-sql-odbc -qt-libtiff -qt-gif -qt-libpng -qt-libmng -phonon -dbus -webkit -qt-libjpeg -qt-zlib -no-style-windowsxp -no-style-windowsvista -fast (стили XP/Vista пришлось отключить из-за того, что в предыдущие разы (Qt 4.3) попытка собрать исходники Qt с этими стилями приводили к error'aм, не стал рисковать, чтобы снова не напороться). А теперь самое интересное. Процесс компиляции прервался из-за того, что возникли проблемы у ld с линковкой библиотек. Как оказалось всему виной оказалась переменная окружения в LIB в которой было это: lib=C:\Program Files\SQLXML 4.0\bin\ Microsoft подложил свинью... Обнулил переменные LIB и INCLUDE. Запустил снова компиляцию, процесс пошел дальше. Следующий вылет произошел из-за -qdbus. Оказывается ему надо качать и предустанавливать библиотеки. Сделал make confclean, отрубил этот dbus. Запустил компиляцию заново. Следующий вылет произошел на этапе сборки QtWebKit. "bridge\c" -I"bridge\qt" -I"generated" -I"plugins\win" -I"..\..\sqlite" -I"..\.. \..\..\include\phonon" -I"..\..\..\..\include\ActiveQt" -I"tmp\moc\debug_shared" -I"." -I"..\..\..\..\mkspecs\win32-g++" -o tmp\obj\debug_shared\WebKit_pch.h.gc h\c++ ..\WebKit\qt\WebKit_pch.h Слишком длинная входная строка. Т.е. параметров слишком много. Пошел другим путем, ну думаю попробую на путях сократить. Кинул исходники в папку "c:\q". Короче некуда! Получил ту же ошибку все-равно. Ну думаю ладно - настало время попробовать это в MSYS. Пришлось опять сделать make confclean и переконфигурацию, т.к. возник косяк с попыткой войти в папку "src\winmain", причем путь в ошибке был указан как "srcwinmain". Т.е. привычная виндовая косая черта теперь управляющий символ как в C++... В общем дело снова дошло до компиляции QtWebKit и я получил туже самую ошибку "Слишком длинная входная строка." (правда теперь в виде иероглифов). Начал мучать гугл. Узнал такую вещь, что mingw32-make и make от MSYS - разные программы. А я обычно тупо копирую mingw32-make и переименовываю в make.exe, чтобы eclipse и другие среды разработок его находили. Для эксперимента пришлось удалить make.exe (тот который mingw32-make) и попробовать собрать через make.exe (который от MSYS в папке C:\msys\1.0\bin). Сначала я никаких изменений не заметил, но потом выяснилось, что я спецом обнулил пути в PATH, чтобы туда не затисалось ничего лишнего, как оказалось затер важные пути: ".:/usr/local/bin:/bin:" Восстановил. Поставил компиляцию и получил опять вылет, но уже на phonon'e. g++ -c -g -frtti -fexceptions -mthreads -Wall -DUNICODE -DQT_LARGEFILE_SUPPORT -DPHONON_MAKE_QT_ONLY_BACKEND -DQT_DLL -DQT_PLUGIN -DQT_PHONON_LIB -DQT_GUI_LIB -DQT_CORE_LIB -DQT_THREAD_SUPPORT -I'../../../../include/QtCore' -I'../../../../include/QtGui' -I'../../../../include/phonon' -I'../../../../include' -I'../../../../include/ActiveQt' -I'tmp/moc/debug_shared' -I'.' -I'../../../../mkspecs/win32-g++' -o tmp/obj/debug_shared/abstractvideorenderer.o ../../../3rdparty/phonon/ds9/abstractvideorenderer.cpp In file included from c:/mingw/bin/../lib/gcc/mingw32/3.4.2/../../../../include/dshow.h:7, from ../../../3rdparty/phonon/ds9/compointer.h:22, from ../../../3rdparty/phonon/ds9/backendnode.h:26, from ../../../3rdparty/phonon/ds9/abstractvideorenderer.h:20, from ../../../3rdparty/phonon/ds9/abstractvideorenderer.cpp:18: c:/mingw/bin/../lib/gcc/mingw32/3.4.2/../../../../include/strmif.h:892: error: expected `;' before '*' token c:/mingw/bin/../lib/gcc/mingw32/3.4.2/../../../../include/strmif.h:991: error: `LPDDPIXELFORMAT' does not name a type c:/mingw/bin/../lib/gcc/mingw32/3.4.2/../../../../include/strmif.h:1027: error: declaration of `GUID tagVMRGUID::GUID' c:/mingw/bin/../lib/gcc/mingw32/3.4.2/../../../../include/winnt.h:1734: error: changes meaning of `GUID' from `typedef struct _GUID GUID' In file included from c:/mingw/bin/../lib/gcc/mingw32/3.4.2/../../../../include/dshow.h:8, from ../../../3rdparty/phonon/ds9/compointer.h:22, from ../../../3rdparty/phonon/ds9/backendnode.h:26, from ../../../3rdparty/phonon/ds9/abstractvideorenderer.h:20, from ../../../3rdparty/phonon/ds9/abstractvideorenderer.cpp:18: c:/mingw/bin/../lib/gcc/mingw32/3.4.2/../../../../include/amaudio.h:7:20: dsound.h: No such file or directory In file included from c:/mingw/bin/../lib/gcc/mingw32/3.4.2/../../../../include/dshow.h:8, from ../../../3rdparty/phonon/ds9/compointer.h:22, from ../../../3rdparty/phonon/ds9/backendnode.h:26, from ../../../3rdparty/phonon/ds9/abstractvideorenderer.h:20, from ../../../3rdparty/phonon/ds9/abstractvideorenderer.cpp:18: c:/mingw/bin/../lib/gcc/mingw32/3.4.2/../../../../include/amaudio.h:19: error: `GetDirectSoundInterface' declared as a `virtual' field c:/mingw/bin/../lib/gcc/mingw32/3.4.2/../../../../include/amaudio.h:19: error: expected `;' before '(' token c:/mingw/bin/../lib/gcc/mingw32/3.4.2/../../../../include/amaudio.h:20: error: `GetPrimaryBufferInterface' declared as a `virtual' field c:/mingw/bin/../lib/gcc/mingw32/3.4.2/../../../../include/amaudio.h:20: error: expected `;' before '(' token c:/mingw/bin/../lib/gcc/mingw32/3.4.2/../../../../include/amaudio.h:21: error: `GetSecondaryBufferInterface' declared as a `virtual' field c:/mingw/bin/../lib/gcc/mingw32/3.4.2/../../../../include/amaudio.h:21: error: expected `;' before '(' token c:/mingw/bin/../lib/gcc/mingw32/3.4.2/../../../../include/amaudio.h:23: error: `ReleaseDirectSoundInterface' declared as a `virtual' field c:/mingw/bin/../lib/gcc/mingw32/3.4.2/../../../../include/amaudio.h:23: error: expected `;' before '(' token c:/mingw/bin/../lib/gcc/mingw32/3.4.2/../../../../include/amaudio.h:24: error: `ReleasePrimaryBufferInterface' declared as a `virtual' field c:/mingw/bin/../lib/gcc/mingw32/3.4.2/../../../../include/amaudio.h:24: error: expected `;' before '(' token c:/mingw/bin/../lib/gcc/mingw32/3.4.2/../../../../include/amaudio.h:25: error: `ReleaseSecondaryBufferInterface' declared as a `virtual' field c:/mingw/bin/../lib/gcc/mingw32/3.4.2/../../../../include/amaudio.h:25: error: expected `;' before '(' token In file included from c:/mingw/bin/../lib/gcc/mingw32/3.4.2/../../../../include/dshow.h:9, from ../../../3rdparty/phonon/ds9/compointer.h:22, from ../../../3rdparty/phonon/ds9/backendnode.h:26, from ../../../3rdparty/phonon/ds9/abstractvideorenderer.h:20, from ../../../3rdparty/phonon/ds9/abstractvideorenderer.cpp:18: c:/mingw/bin/../lib/gcc/mingw32/3.4.2/../../../../include/amvideo.h:7:19: ddraw.h: No such file or directory In file included from c:/mingw/bin/../lib/gcc/mingw32/3.4.2/../../../../include/dshow.h:9, from ../../../3rdparty/phonon/ds9/compointer.h:22, from ../../../3rdparty/phonon/ds9/backendnode.h:26, from ../../../3rdparty/phonon/ds9/abstractvideorenderer.h:20, from ../../../3rdparty/phonon/ds9/abstractvideorenderer.cpp:18: c:/mingw/bin/../lib/gcc/mingw32/3.4.2/../../../../include/amvideo.h:56: error: expected `;' before "rcTarget" c:/mingw/bin/../lib/gcc/mingw32/3.4.2/../../../../include/amvideo.h:91: error: `GetCaps' declared as a `virtual' field c:/mingw/bin/../lib/gcc/mingw32/3.4.2/../../../../include/amvideo.h:91: error: expected `;' before '(' token c:/mingw/bin/../lib/gcc/mingw32/3.4.2/../../../../include/amvideo.h:92: error: `GetDirectDraw' declared as a `virtual' field c:/mingw/bin/../lib/gcc/mingw32/3.4.2/../../../../include/amvideo.h:92: error: expected `;' before '(' token c:/mingw/bin/../lib/gcc/mingw32/3.4.2/../../../../include/amvideo.h:93: error: `GetEmulatedCaps' declared as a `virtual' field c:/mingw/bin/../lib/gcc/mingw32/3.4.2/../../../../include/amvideo.h:93: error: expected `;' before '(' token c:/mingw/bin/../lib/gcc/mingw32/3.4.2/../../../../include/amvideo.h:95: error: `GetSurfaceDesc' declared as a `virtual' field c:/mingw/bin/../lib/gcc/mingw32/3.4.2/../../../../include/amvideo.h:95: error: expected `;' before '(' token c:/mingw/bin/../lib/gcc/mingw32/3.4.2/../../../../include/amvideo.h:99: error: `SetDirectDraw' declared as a `virtual' field c:/mingw/bin/../lib/gcc/mingw32/3.4.2/../../../../include/amvideo.h:99: error: expected `;' before '(' token In file included from c:/mingw/bin/../lib/gcc/mingw32/3.4.2/../../../../include/dshow.h:17, from ../../../3rdparty/phonon/ds9/compointer.h:22, from ../../../3rdparty/phonon/ds9/backendnode.h:26, from ../../../3rdparty/phonon/ds9/abstractvideorenderer.h:20, from ../../../3rdparty/phonon/ds9/abstractvideorenderer.cpp:18: c:/mingw/bin/../lib/gcc/mingw32/3.4.2/../../../../include/bdatypes.h:21: error: `dwOffset' does not name a type In file included from ../../../3rdparty/phonon/ds9/compointer.h:22, from ../../../3rdparty/phonon/ds9/backendnode.h:26, from ../../../3rdparty/phonon/ds9/abstractvideorenderer.h:20, from ../../../3rdparty/phonon/ds9/abstractvideorenderer.cpp:18: c:/mingw/bin/../lib/gcc/mingw32/3.4.2/../../../../include/dshow.h:84: error: `DDSCAPS2' does not name a type c:/mingw/bin/../lib/gcc/mingw32/3.4.2/../../../../include/dshow.h:85: error: `DDPIXELFORMAT' does not name a type c:/mingw/bin/../lib/gcc/mingw32/3.4.2/../../../../include/dshow.h:97: error: `DDPIXELFORMAT' does not name a type c:/mingw/bin/../lib/gcc/mingw32/3.4.2/../../../../include/dshow.h:102: error: `DDPIXELFORMAT' does not name a type In file included from ../../../3rdparty/phonon/ds9/abstractvideorenderer.h:20, from ../../../3rdparty/phonon/ds9/abstractvideorenderer.cpp:18: ../../../3rdparty/phonon/ds9/backendnode.h:37: error: `IPin' was not declared in this scope ../../../3rdparty/phonon/ds9/backendnode.h:37: error: template argument 1 is invalid ../../../3rdparty/phonon/ds9/backendnode.h:37: error: ISO C++ forbids declaration of `InputPin' with no type ../../../3rdparty/phonon/ds9/backendnode.h:38: error: `IPin' was not declared in this scope ../../../3rdparty/phonon/ds9/backendnode.h:38: error: template argument 1 is invalid ../../../3rdparty/phonon/ds9/backendnode.h:38: error: ISO C++ forbids declaration of `OutputPin' with no type ../../../3rdparty/phonon/ds9/backendnode.h:39: error: `IBaseFilter' was not declared in this scope ../../../3rdparty/phonon/ds9/backendnode.h:39: error: template argument 1 is invalid ../../../3rdparty/phonon/ds9/backendnode.h:39: error: ISO C++ forbids declaration of `Filter' with no type ../../../3rdparty/phonon/ds9/backendnode.h:40: error: `IGraphBuilder' was not declared in this scope ../../../3rdparty/phonon/ds9/backendnode.h:40: error: template argument 1 is invalid ../../../3rdparty/phonon/ds9/backendnode.h:40: error: ISO C++ forbids declaration of `Graph' with no type mingw32-make[8]: *** [tmp/obj/debug_shared/abstractvideorenderer.o] Error 1 mingw32-make[8]: Leaving directory `c:/SABROG/qt-win-opensource-src-4.5.0/src/plugins/phonon/ds9' mingw32-make[7]: *** [debug-all] Error 2 mingw32-make[7]: Leaving directory `c:/SABROG/qt-win-opensource-src-4.5.0/src/plugins/phonon/ds9' c:\mingw\bin\mingw32-make.exe[6]: *** [all] Error 2 c:\mingw\bin\mingw32-make.exe[6]: Leaving directory `c:/SABROG/qt-win-opensource-src-4.5.0/src/plugins/phonon/ds9' mingw32-make[5]: *** [sub-ds9-make_default] Error 2 mingw32-make[5]: Leaving directory `c:/SABROG/qt-win-opensource-src-4.5.0/src/plugins/phonon' c:\mingw\bin\mingw32-make.exe[4]: *** [all] Error 2 c:\mingw\bin\mingw32-make.exe[4]: Leaving directory `c:/SABROG/qt-win-opensource-src-4.5.0/src/plugins/phonon' mingw32-make[3]: *** [sub-phonon-make_default] Error 2 mingw32-make[3]: Leaving directory `c:/SABROG/qt-win-opensource-src-4.5.0/src/plugins' c:\mingw\bin\mingw32-make.exe[2]: *** [all] Error 2 c:\mingw\bin\mingw32-make.exe[2]: Leaving directory `c:/SABROG/qt-win-opensource-src-4.5.0/src/plugins' c:\mingw\bin\mingw32-make.exe[1]: *** [sub-plugins-make_default-ordered] Error 2 c:\mingw\bin\mingw32-make.exe[1]: Leaving directory `c:/SABROG/qt-win-opensource-src-4.5.0' make: *** [all] Error 2
Причем ошибка где-то внутри MinGW'шных хедерах. У меня устарел MinGW? Поставил MinGW тот, который идет вместе с SDK. Запустил снова компиляцию и получил те же самые ошибки. Следующим своим шагом я вижу опять make confclean, отрубание phonon'a.(а что такое phonon-backend?) Я уже замучался все заново переконфигурировать и пересобирать. Возможно ли как-то сказать Qt не компилировать модуль, который не собирается, оставив то что уже скомпиленно и от него не зависит?
Название: Re: Qt 4.5 не хочет со мной дружить
Отправлено: lit-uriy от Март 07, 2009, 13:03
>>Т.е. параметров слишком много. Пошел другим путем, ну думаю попробую на путях сократить. Кинул исходники в папку "c:\q". Короче некуда! Получил ту же ошибку все-равно. речь не идет о пути, речь идет о строку аргументов, а они длинные, WebKit на двух тоннике не собирается с помощью MinGW. И не собирается со времен 4.4.х. >>Возможно ли как-то сказать Qt не компилировать модуль, который не собирается, оставив то что уже скомпиленно и от него не зависит? Выходит тебе ни phonon ни WebKit не обязательны. Дак и несобирай их вовсе. Я так для двухтонника собирал: configure -shared -debug-and-release -plugin-sql-odbc -plugin-sql-sqlite -qt-zlib -qt-zlib -qt-libpng -qt-libmng -qt-libtiff -qt-libjpeg -no-webkit -no-phonon -no-phonon-backend
Название: Re: Qt 4.5 не хочет со мной дружить
Отправлено: Rcus от Март 07, 2009, 13:15
Да, есть такая проблема со слишком длинными путями :) В Win2k ограничение 4096 байт на длину команды, в WinXP ограничение подняли до 8192
Название: Re: Qt 4.5 не хочет со мной дружить
Отправлено: SABROG от Март 07, 2009, 13:19
Насчет аргументов это мне и так понятно. Просто пути передаются через ключ -I, и естественно это место жрет. Больше я не нашел на каких параметрах можно сэкономить. Раньше это помогало, теперь нет.
Нет ну какже без WebKit'a и phonon'a, я раньше без них жил? Я хочу иметь "All In One", чтобы и ютуб через webview проигрывался со звуком. И dbus тоже хочу. Не хочу себе в чем-то отказывать, а стилями могу поступится ибо они ОС-зависимые. И вообще хочу, чтобы ключи SSE2/MMX работали для MinGW и оптимизацию -O3 и чтобы Qt при этом не крашилось :P
Название: Re: Qt 4.5 не хочет со мной дружить
Отправлено: Rcus от Март 07, 2009, 13:28
А DBus вообще только для Unix, также как и ActiveQt только для Windows платформы :)
Название: Re: Qt 4.5 не хочет со мной дружить
Отправлено: BRE от Март 07, 2009, 13:33
А DBus вообще только для Unix, также как и ActiveQt только для Windows платформы :)
D-Bus есть и в венде, freedesktop, однако. ;)
Название: Re: Qt 4.5 не хочет со мной дружить
Отправлено: SABROG от Март 07, 2009, 13:37
Да, под виндой тоже работает. Хотелось бы подебасить, межпрограммное взаимодействие, все дела.
Название: Re: Qt 4.5 не хочет со мной дружить
Отправлено: crackedmind от Март 07, 2009, 13:39
Вообще-то написано ж что фонон не компилируется на мингв. Ему же директикс нужен.
Название: Re: Qt 4.5 не хочет со мной дружить
Отправлено: SABROG от Март 07, 2009, 13:50
В общем одна проблема потянула за собой другую. Из-за того, что тролли не хотят адаптировать код под SSE, MMX для gcc - невозможно собрать модули directx для phonon'a, т.к. они требуют этой оптимизации. Эхх, нашелся бы человек, который переписал бы ядро Qt таким образом, чтобы генерировался парвильный код с SSE/MMX оптимизацией на MinGW ;) В *nix'ах походу это все работает без оптимизации, там же нет directx'a?
Название: Re: Qt 4.5 не хочет со мной дружить
Отправлено: crackedmind от Март 07, 2009, 13:54
на никсах ,вроде, через gstreamer бэкенд фонон работает
И связи адаптации кода SSE/MMX под gcc и directx не понял. Лучше майкрософт пнуть, чтоб сдк не только для визуал студио выходило :))
Название: Re: Qt 4.5 не хочет со мной дружить
Отправлено: SABROG от Март 07, 2009, 14:05
на никсах ,вроде, через gstreamer бэкенд фонон работает
Это здесь обсуждалось. http://www.prog.org.ru/topic_8423_0.html Ну обидно чесслово, QtCreator - компилер MinGW, а на ютубе тролли выкладывают демки скомпиленные в мягкотелом вижуале. Типа посмотрите чего теперь можно, качайте QtCreator и получайте фигу :) Насчет MMX написано тут - http://qt-rus.wikidot.com/qt4-mingw-phonon Но если честно, то я сам до конца не понимаю как это все завязано и почему нельзя тупо отключить этот злополучный MMX, чтобы прилинковать DirectX SDK собранный в студии. Тему наверно можно перенести сюда http://www.prog.org.ru/board_48_0.html
Название: Re: Qt 4.5 не хочет со мной дружить
Отправлено: crackedmind от Март 07, 2009, 14:25
А почему бы не компилировать на VC++ 2008 Express Edition. QtCreator нормально подтягивает этот компилятор. Даже вроде отладка работает.
Название: Re: Qt 4.5 не хочет со мной дружить
Отправлено: BRE от Март 07, 2009, 14:33
А почему бы не компилировать на VC++ 2008 Express Edition. QtCreator нормально подтягивает этот компилятор. Даже вроде отладка работает.
А он бесплатный?
Название: Re: Qt 4.5 не хочет со мной дружить
Отправлено: SABROG от Март 07, 2009, 14:37
Прикол, пост годичной давности созданный мной - http://forum.vingrad.ru/index.php?showtopic=192829&view=findpost&p=1426171
Как все забывается то :)
Название: Re: Qt 4.5 не хочет со мной дружить
Отправлено: crackedmind от Март 07, 2009, 14:39
Естественно бесплатный. По поводу отладки. 1.0 похоже не поддерживает отладку майкрософтским дебаггером. Зато в репозатарии уже есть, через CDB. Для этого нужно поставить Debugging tools for windows. Как проверю, отпишусь. Из ссылки. Apparently, Phonon needs -direct3d flag under MinGW. The problem is that when qpaintengine_d3d.cpp is built, it needs MMX and SSE support so the compilation fails. And I know Trolltech/Qt4 does NOT support MMX and SSE with MinGW (because serious bugs). Does it means that Phonon can not be built under MinGW? :( Ну я на VC++ собирал Qt с фононом и опцией -no-direct3d и все работает. Правда я видео не пробывал проигрывать :)
Название: Re: Qt 4.5 не хочет со мной дружить
Отправлено: BRE от Март 07, 2009, 14:43
Естественно бесплатный.
Я не прикалывался, для меня это не естественно. В те далекие времена мальчик Билли бесплатно ничего не давал. ;D
Название: Re: Qt 4.5 не хочет со мной дружить
Отправлено: SABROG от Март 07, 2009, 15:10
А патчик похоже все-таки существует http://www.elpauer.org/?p=258 http://techbase.kde.org/Getting_Started/Build/KDE4/Windows/patches
Осталось понять как все это увязать.
Вот еще порт Amarok'a http://amarok.kde.org/wiki/Development/Win32 пишут, что должно собираться и работать через mingw. Используется phonon и Direct Show 9.
Вот еще кое-что. Оказывается в KDE все давно есть http://www.commit-digest.org/issues/2007-12-16/moreinfo/748629/
По сути осталось сказать разработчикам MinGW включить пропатченные файлы в свой дистрибутив...
Я не уверен, но надо попробовать из этой папочки скопировать хедеры http://websvn.kde.org/trunk/kdesupport/kdewin32/include/directx/
Название: Re: Qt 4.5 не хочет со мной дружить
Отправлено: crackedmind от Март 07, 2009, 16:57
Qt Creator собрал с поддержкой отладки с помощью CDB. Видать из-за того что поддержка экспериментальная, креатор крашится при запуске :)
Название: Re: Qt 4.5 не хочет со мной дружить
Отправлено: pastor от Март 07, 2009, 18:33
Есть вот такой вот таск на трекере 210904 - Build Debug Libraries stops with line too long when using qt-win 4.4.0 with MinGW (http://www.qtsoftware.com/developer/task-tracker/index_html?method=entry&id=210904)
Название: Re: Qt 4.5 не хочет со мной дружить
Отправлено: SABROG от Март 07, 2009, 19:00
Что-то они долго пофиксить не могут. Уже пора придумывать makefile'ы для компиляторов, а то параметры да параметры. Сейчас такие здоровые проекты, что никаких параметров не хватит.
Название: Re: Qt 4.5 не хочет со мной дружить
Отправлено: kamre от Март 08, 2009, 05:51
Что-то они долго пофиксить не могут. Уже пора придумывать makefile'ы для компиляторов, а то параметры да параметры. Сейчас такие здоровые проекты, что никаких параметров не хватит.
Кстати, майкрософтовский компилятор уже давно всю кучу параметров в виде файла принимает через "@<file> options response file". Еще вроде бы в CMake сделали workaround какой-то для MinGW, особенно это актуально при линковке огромного количества obj файлов.
Название: Re: Qt 4.5 не хочет со мной дружить
Отправлено: SABROG от Март 08, 2009, 10:26
Я знаю, что параметры можно передавать таким образом: g++ `cat parameters.txt` но это только для msys/linux. Кроме того в этих шеллах нет такого маленького буффера в отличае от cmd, т.ч. там он бесполезен.
Опяньки, оказывается demos/browser проигрывает флешки с ютуба и без phonon'a :)
Название: Re: Qt 4.5 не хочет со мной дружить
Отправлено: SABROG от Март 10, 2009, 13:50
...WebKit на двух тоннике не собирается
Через MSYS собрался webkit на win2k, похоже MSYS'шный make.exe помог.
Название: Re: Qt 4.5 не хочет со мной дружить
Отправлено: crackedmind от Март 11, 2009, 09:40
По поводу фононовского бэкенда. http://wiki.qtcentre.org/index.php?title=Building_the_Phonon_backend_plugin_on_Windows_using_MinGW (http://wiki.qtcentre.org/index.php?title=Building_the_Phonon_backend_plugin_on_Windows_using_MinGW)
Название: Re: Qt 4.5 не хочет со мной дружить
Отправлено: SABROG от Март 12, 2009, 17:45
8 марта страница создана, на следующий день, когда я начал этим заниматься. Кажись 7 марта я отправил вопрос на tasktracker тролям, почему они не используют эти хедеры из kde и в newsgroup'пу троллей. Видать кто-то наткнулся. И именно эти 2 ссылки, что в начале статьи я везде указывал. Причем вторую ссылку я вручную формировал.
Название: Re: Qt 4.5 не хочет со мной дружить
Отправлено: SABROG от Март 13, 2009, 13:55
Мистика какая-то. Использую конфигурацию с ключем -fast, а чего Qt в examples'ы полез? ./configure -debug-and-release -phonon -phonon-backend -qt-sql-sqlite -qt-sql-odbc -qt-libtiff -qt-gif -qt-libpng -qt-libmng -webkit -qt-libjpeg -qt-zlib -no-style-windowsxp -no-style-windowsvista -fast
make[4]: Entering directory `/c/sabrog/qt-win-opensource-src-4.5.0/examples/phonon/capabilities' g++ -enable-stdcall-fixup -Wl,-enable-auto-import -Wl,-enable-runtime-pseudo-reloc -mthreads -Wl -Wl,-subsystem,windows -o debug/capabilities.exe tmp/obj/debug_shared/window.o tmp/obj/debug_shared/main.o tmp/obj/debug_shared/moc_window.o -L'c:/sabrog/qt-win-opensource-src-4.5.0/lib' -L'c:/sabrog/qt-win-opensource-src-4.5.0/lib' -lmingw32 -lqtmaind -lphonond4 -lQtGuid4 -lQtCored4 tmp/obj/debug_shared/window.o(.rdata$_ZTVN6Phonon22ObjectDescriptionModelILNS_21ObjectDescriptionTypeE0EEE[vtable for Phonon::ObjectDescriptionModel<(Phonon::ObjectDescriptionType)0>]+0x8): In function `ZNK6Phonon22ObjectDescriptionModelILNS_21ObjectDescriptionTypeE0EE9mimeTypesEv': c:/sabrog/qt-win-opensource-src-4.5.0/examples/phonon/capabilities/../../../include/Phonon/../../src/phonon/../3rdparty/phonon/phonon/objectdescriptionmodel.h: undefined reference to `Phonon::ObjectDescriptionModel<(Phonon::ObjectDescriptionType)0>::metaObject() const' tmp/obj/debug_shared/window.o(.rdata$_ZTVN6Phonon22ObjectDescriptionModelILNS_21ObjectDescriptionTypeE0EEE[vtable for Phonon::ObjectDescriptionModel<(Phonon::ObjectDescriptionType)0>]+0xc):c:/sabrog/qt-win-opensource-src-4.5.0/examples/phonon/capabilities/../../../include/Phonon/../../src/phonon/../3rdparty/phonon/phonon/objectdescriptionmodel.h: undefined reference to `Phonon::ObjectDescriptionModel<(Phonon::ObjectDescriptionType)0>::qt_metacast(char const*)' collect2: ld returned 1 exit status make[4]: *** [debug/capabilities.exe] Error 1 make[4]: Leaving directory `/c/sabrog/qt-win-opensource-src-4.5.0/examples/phonon/capabilities' make[3]: *** [debug-all] Error 2 make[3]: Leaving directory `/c/sabrog/qt-win-opensource-src-4.5.0/examples/phonon/capabilities' make[2]: *** [sub-capabilities-make_default-ordered] Error 2 make[2]: Leaving directory `/c/sabrog/qt-win-opensource-src-4.5.0/examples/phonon' make[1]: *** [sub-phonon-make_default] Error 2 make[1]: Leaving directory `/c/sabrog/qt-win-opensource-src-4.5.0/examples' make: *** [sub-examples-make_default-ordered] Error 2
Это я так phonon по инструкции собираю с MinGW, чего-то явно не хватает в ней...
Название: Re: Qt 4.5 не хочет со мной дружить
Отправлено: crackedmind от Март 13, 2009, 14:22
Мистика какая-то. Использую конфигурацию с ключем -fast, а чего Qt в examples'ы полез? Да почему мистика. Configure Qt quickly by generating Makefiles only for library and subdirectory targets. All other Makefiles are created as wrappers which will in turn run qmake Все правильно.
Название: Re: Qt 4.5 не хочет со мной дружить
Отправлено: SABROG от Март 13, 2009, 15:17
Кажись понял в чем разница. В обычном случае конфигуратор генерит makefile'ы для каждого .pro файла на этапе конфигурирования, с -fast это происходит уже на этапе компиляции. По сути разница есть только в скорости переконфигурирования после make confclean. В противном случае разницы нет никакой. Ну как бы там нибыло, проблема со сборкой этого examples/phonon/capabilities есть. --- Опаньки, опять что-то не так. Отключил -fast и получил это после попытке выполнить make: g++ -x c++-header -c -g -Wall -frtti -fexceptions -mthreads -DQT_SHARED -DQT_THREAD_SUPPORT -DUNICODE -DQT_LARGEFILE_SUPPORT -DQT_BUILD_CORE_LIB -DQT_NO_USING_NAMESPACE -DQT_MAKEDLL -DQT_ASCII_CAST_WARNINGS -DQT3_SUPPORT -DQT_MOC_COMPAT -D_USE_MATH_DEFINES -DHB_EXPORT=Q_CORE_EXPORT -DQT_DLL -I'../../include' -I'../../include/QtCore' -I'tmp/rcc/debug_shared' -I'tmp' -I'concurrent' -I'global' -I'../3rdparty/zlib' -I'../3rdparty/harfbuzz/src' -I'../../include/ActiveQt' -I'tmp/moc/debug_shared' -I'.' -I'c:/SABROG/qt-win-opensource-src-4.5.0/mkspecs/win32-g++' -o tmp/obj/debug_shared/qt_pch.h.gch/c++ global/qt_pch.h g++ -c -include tmp/obj/debug_shared/qt_pch.h -g -Wall -frtti -fexceptions -mthreads -DQT_SHARED -DQT_THREAD_SUPPORT -DUNICODE -DQT_LARGEFILE_SUPPORT -DQT_BUILD_CORE_LIB -DQT_NO_USING_NAMESPACE -DQT_MAKEDLL -DQT_ASCII_CAST_WARNINGS -DQT3_SUPPORT -DQT_MOC_COMPAT -D_USE_MATH_DEFINES -DHB_EXPORT=Q_CORE_EXPORT -DQT_DLL -I'../../include' -I'../../include/QtCore' -I'tmp/rcc/debug_shared' -I'tmp' -I'concurrent' -I'global' -I'../3rdparty/zlib' -I'../3rdparty/harfbuzz/src' -I'../../include/ActiveQt' -I'tmp/moc/debug_shared' -I'.' -I'c:/SABROG/qt-win-opensource-src-4.5.0/mkspecs/win32-g++' -o tmp/obj/debug_shared/qfuture.o concurrent/qfuture.cpp 0 [main] make 2236 open_stackdumpfile: Dumping stack trace to make.exe.stackdump make[1]: *** [debug-all] Error 128 make[1]: Leaving directory `/c/sabrog/qt-win-opensource-src-4.5.0/src/corelib' make: *** [sub-corelib-sub_src_target_ordered] Error 2
Название: Re: Qt 4.5 не хочет со мной дружить
Отправлено: SABROG от Март 14, 2009, 19:55
В общем собрал сегодня наконец поддержку phonon с MinGW. Скажу, что пример musicplayer у меня работает, а также работает "Простой видеоплеер" отсюда: http://www.qtinfo.ru/simplevideoplayer (проверил на 5 фильмах с различными кодеками, видео и звук идут, картинка отличная, тормозов нет)
Никаких проблем с VMR9 у меня небыло, редактировать src/3rdparty/phonon/ds9/videowidget.cpp не пришлось. Ругательств в консоль тоже нету.
Я рад, свершилось :)
P.S.: я не ставил никаких DirectX SDK и прочего. Просто скачал пропатченные хедеры, отредактировал .pro файли и пересобрал Qt.
Название: Re: Qt 4.5 не хочет со мной дружить
Отправлено: ppk от Март 14, 2009, 23:28
Не поделитесь опытом? Если есть возможность - пошаговая инструкция была бы очень кстати.
Название: Re: Qt 4.5 не хочет со мной дружить
Отправлено: SABROG от Март 15, 2009, 01:09
Не поделитесь опытом? Если есть возможность - пошаговая инструкция была бы очень кстати.
Вот же лежит: http://wiki.qtcentre.org/index.php?title=Building_the_Phonon_backend_plugin_on_Windows_using_MinGW Кстати проверить работу phonon'a легко из Designer'a после сборки, там виджеты соотв. появляются. P.S.: обнаружил странную вещь. У меня есть два архива с исходниками: qt-win-opensource-src-4.5.0-snapshot-20090120.zip - без phonon'a qt-win-opensource-src-4.5.0.zip - с phonon'ом --- Попытался собрать Qt статически. Запоролся на этапе сборки Assistant.exe. ld висел 25 минут, после чего выдал: g++ -enable-stdcall-fixup -Wl,-enable-auto-import -Wl,-enable-runtime-pseudo-reloc -Wl,-subsystem,windows -o ../../../../bin/assistant.exe object_script.assistant.Debug -L'd:/Work/qt-win-opensource-src-4.5.0static/lib' -L'd:/Work/qt-win-opensource-src-4.5.0static/lib' -lmingw32 -lqtmaind tmp/obj/debug_static/assistant_res.o -LD:/Work/qt-win-opensource-src-4.5.0static/plugins/sqldrivers -lQtHelpd -lQtWebKitd -lQtCLucened -lQtSqld -lQtXmld -lshlwapi -lversion -lphonond -lQtNetworkd -lodbc32 -lQtGuid -lgdi32 -lcomdlg32 -loleaut32 -limm32 -lwinmm -lwinspool -lmsimg32 -lQtCored -lkernel32 -luser32 -lshell32 -luuid -lole32 -ladvapi32 -lws2_32 d:/Work/qt-win-opensource-src-4.5.0static/lib/libQtWebKitd.a(MediaPlayerPrivatePhonon.o)(.text+0x93):MediaPlayerPrivatePhonon.cpp: undefined reference to `_imp___ZNK6Phonon11MediaObject5stateEv' d:/Work/qt-win-opensource-src-4.5.0static/lib/libQtWebKitd.a(MediaPlayerPrivatePhonon.o)(.text+0xd0):MediaPlayerPrivatePhonon.cpp: undefined reference to `_imp___ZNK6Phonon11MediaObject11currentTimeEv' d:/Work/qt-win-opensource-src-4.5.0static/lib/libQtWebKitd.a(MediaPlayerPrivatePhonon.o)(.text+0x104):MediaPlayerPrivatePhonon.cpp: undefined reference to `_imp___ZNK6Phonon11MediaObject13remainingTimeEv' d:/Work/qt-win-opensource-src-4.5.0static/lib/libQtWebKitd.a(MediaPlayerPrivatePhonon.o)(.text+0x138):MediaPlayerPrivatePhonon.cpp: undefined reference to `_imp___ZNK6Phonon11MediaObject9totalTimeEv' d:/Work/qt-win-opensource-src-4.5.0static/lib/libQtWebKitd.a(MediaPlayerPrivatePhonon.o)(.text+0x186):MediaPlayerPrivatePhonon.cpp: undefined reference to `_imp___ZNK6Phonon11MediaObject8metaDataEv' d:/Work/qt-win-opensource-src-4.5.0static/lib/libQtWebKitd.a(MediaPlayerPrivatePhonon.o)(.text+0x23d):MediaPlayerPrivatePhonon.cpp: undefined reference to `_imp___ZNK6Phonon11MediaObject8hasVideoEv' d:/Work/qt-win-opensource-src-4.5.0static/lib/libQtWebKitd.a(MediaPlayerPrivatePhonon.o)(.text+0x26c):MediaPlayerPrivatePhonon.cpp: undefined reference to `_imp___ZNK6Phonon11MediaObject10isSeekableEv' d:/Work/qt-win-opensource-src-4.5.0static/lib/libQtWebKitd.a(MediaPlayerPrivatePhonon.o)(.text+0x33d):MediaPlayerPrivatePhonon.cpp: undefined reference to `_imp___ZN6Phonon11MediaObjectC1EP7QObject' d:/Work/qt-win-opensource-src-4.5.0static/lib/libQtWebKitd.a(MediaPlayerPrivatePhonon.o)(.text+0x363):MediaPlayerPrivatePhonon.cpp: undefined reference to `_imp___ZN6Phonon11VideoWidgetC1EP7QWidget' d:/Work/qt-win-opensource-src-4.5.0static/lib/libQtWebKitd.a(MediaPlayerPrivatePhonon.o)(.text+0x389):MediaPlayerPrivatePhonon.cpp: undefined reference to `_imp___ZN6Phonon11AudioOutputC1EP7QObject' d:/Work/qt-win-opensource-src-4.5.0static/lib/libQtWebKitd.a(MediaPlayerPrivatePhonon.o)(.text+0x40e):MediaPlayerPrivatePhonon.cpp: undefined reference to `_imp___ZN6Phonon10createPathEPNS_9MediaNodeES1_' d:/Work/qt-win-opensource-src-4.5.0static/lib/libQtWebKitd.a(MediaPlayerPrivatePhonon.o)(.text+0x41e):MediaPlayerPrivatePhonon.cpp: undefined reference to `_imp___ZN6Phonon4PathD1Ev' d:/Work/qt-win-opensource-src-4.5.0static/lib/libQtWebKitd.a(MediaPlayerPrivatePhonon.o)(.text+0x47b):MediaPlayerPrivatePhonon.cpp: undefined reference to `_imp___ZN6Phonon10createPathEPNS_9MediaNodeES1_' d:/Work/qt-win-opensource-src-4.5.0static/lib/libQtWebKitd.a(MediaPlayerPrivatePhonon.o)(.text+0x48b):MediaPlayerPrivatePhonon.cpp: undefined reference to `_imp___ZN6Phonon4PathD1Ev' d:/Work/qt-win-opensource-src-4.5.0static/lib/libQtWebKitd.a(MediaPlayerPrivatePhonon.o)(.text+0x82d):MediaPlayerPrivatePhonon.cpp: undefined reference to `_imp___ZN6Phonon11MediaObjectC1EP7QObject' d:/Work/qt-win-opensource-src-4.5.0static/lib/libQtWebKitd.a(MediaPlayerPrivatePhonon.o)(.text+0x853):MediaPlayerPrivatePhonon.cpp: undefined reference to `_imp___ZN6Phonon11VideoWidgetC1EP7QWidget' d:/Work/qt-win-opensource-src-4.5.0static/lib/libQtWebKitd.a(MediaPlayerPrivatePhonon.o)(.text+0x879):MediaPlayerPrivatePhonon.cpp: undefined reference to `_imp___ZN6Phonon11AudioOutputC1EP7QObject' d:/Work/qt-win-opensource-src-4.5.0static/lib/libQtWebKitd.a(MediaPlayerPrivatePhonon.o)(.text+0x8fe):MediaPlayerPrivatePhonon.cpp: undefined reference to `_imp___ZN6Phonon10createPathEPNS_9MediaNodeES1_' d:/Work/qt-win-opensource-src-4.5.0static/lib/libQtWebKitd.a(MediaPlayerPrivatePhonon.o)(.text+0x90e):MediaPlayerPrivatePhonon.cpp: undefined reference to `_imp___ZN6Phonon4PathD1Ev' d:/Work/qt-win-opensource-src-4.5.0static/lib/libQtWebKitd.a(MediaPlayerPrivatePhonon.o)(.text+0x96b):MediaPlayerPrivatePhonon.cpp: undefined reference to `_imp___ZN6Phonon10createPathEPNS_9MediaNodeES1_' d:/Work/qt-win-opensource-src-4.5.0static/lib/libQtWebKitd.a(MediaPlayerPrivatePhonon.o)(.text+0x97b):MediaPlayerPrivatePhonon.cpp: undefined reference to `_imp___ZN6Phonon4PathD1Ev' d:/Work/qt-win-opensource-src-4.5.0static/lib/libQtWebKitd.a(MediaPlayerPrivatePhonon.o)(.text+0xf34):MediaPlayerPrivatePhonon.cpp: undefined reference to `_imp___ZNK6Phonon11MediaObject8hasVideoEv' d:/Work/qt-win-opensource-src-4.5.0static/lib/libQtWebKitd.a(MediaPlayerPrivatePhonon.o)(.text+0xfc1):MediaPlayerPrivatePhonon.cpp: undefined reference to `_imp___ZN6Phonon11MediaSourceC1ERK4QUrl' d:/Work/qt-win-opensource-src-4.5.0static/lib/libQtWebKitd.a(MediaPlayerPrivatePhonon.o)(.text+0xfd8):MediaPlayerPrivatePhonon.cpp: undefined reference to `_imp___ZN6Phonon11MediaObject16setCurrentSourceERKNS_11MediaSourceE' d:/Work/qt-win-opensource-src-4.5.0static/lib/libQtWebKitd.a(MediaPlayerPrivatePhonon.o)(.text+0xfe5):MediaPlayerPrivatePhonon.cpp: undefined reference to `_imp___ZN6Phonon11MediaSourceD1Ev' d:/Work/qt-win-opensource-src-4.5.0static/lib/libQtWebKitd.a(MediaPlayerPrivatePhonon.o)(.text+0x101d):MediaPlayerPrivatePhonon.cpp: undefined reference to `_imp___ZN6Phonon11AudioOutput9setVolumeEd' d:/Work/qt-win-opensource-src-4.5.0static/lib/libQtWebKitd.a(MediaPlayerPrivatePhonon.o)(.text+0x105c):MediaPlayerPrivatePhonon.cpp: undefined reference to `_imp___ZN6Phonon11MediaObject4playEv' d:/Work/qt-win-opensource-src-4.5.0static/lib/libQtWebKitd.a(MediaPlayerPrivatePhonon.o)(.text+0x1074):MediaPlayerPrivatePhonon.cpp: undefined reference to `_imp___ZN6Phonon11MediaObject5pauseEv' d:/Work/qt-win-opensource-src-4.5.0static/lib/libQtWebKitd.a(MediaPlayerPrivatePhonon.o)(.text+0x108c):MediaPlayerPrivatePhonon.cpp: undefined reference to `_imp___ZNK6Phonon11MediaObject5stateEv' d:/Work/qt-win-opensource-src-4.5.0static/lib/libQtWebKitd.a(MediaPlayerPrivatePhonon.o)(.text+0x10b2):MediaPlayerPrivatePhonon.cpp: undefined reference to `_imp___ZNK6Phonon11MediaObject10isSeekableEv' d:/Work/qt-win-opensource-src-4.5.0static/lib/libQtWebKitd.a(MediaPlayerPrivatePhonon.o)(.text+0x111e):MediaPlayerPrivatePhonon.cpp: undefined reference to `_imp___ZN6Phonon11MediaObject4seekEx' d:/Work/qt-win-opensource-src-4.5.0static/lib/libQtWebKitd.a(MediaPlayerPrivatePhonon.o)(.text+0x1150):MediaPlayerPrivatePhonon.cpp: undefined reference to `_imp___ZNK6Phonon11MediaObject9totalTimeEv' d:/Work/qt-win-opensource-src-4.5.0static/lib/libQtWebKitd.a(MediaPlayerPrivatePhonon.o)(.text+0x11a0):MediaPlayerPrivatePhonon.cpp: undefined reference to `_imp___ZNK6Phonon11MediaObject11currentTimeEv' d:/Work/qt-win-opensource-src-4.5.0static/lib/libQtWebKitd.a(MediaPlayerPrivatePhonon.o)(.text+0x1217):MediaPlayerPrivatePhonon.cpp: undefined reference to `_imp___ZN6Phonon11AudioOutput9setVolumeEd' d:/Work/qt-win-opensource-src-4.5.0static/lib/libQtWebKitd.a(MediaPlayerPrivatePhonon.o)(.text+0x123e):MediaPlayerPrivatePhonon.cpp: undefined reference to `_imp___ZN6Phonon11AudioOutput8setMutedEb' d:/Work/qt-win-opensource-src-4.5.0static/lib/libQtWebKitd.a(MediaPlayerPrivatePhonon.o)(.text+0x1302):MediaPlayerPrivatePhonon.cpp: undefined reference to `_imp___ZNK6Phonon11MediaObject5stateEv' d:/Work/qt-win-opensource-src-4.5.0static/lib/libQtWebKitd.a(MediaPlayerPrivatePhonon.o)(.text+0x1339):MediaPlayerPrivatePhonon.cpp: undefined reference to `_imp___ZN6Phonon11MediaObject5pauseEv' d:/Work/qt-win-opensource-src-4.5.0static/lib/libQtWebKitd.a(MediaPlayerPrivatePhonon.o)(.text+0x1376):MediaPlayerPrivatePhonon.cpp: undefined reference to `_imp___ZNK6Phonon11MediaObject9errorTypeEv' d:/Work/qt-win-opensource-src-4.5.0static/lib/libQtWebKitd.a(MediaPlayerPrivatePhonon.o)(.text+0x13ae):MediaPlayerPrivatePhonon.cpp: undefined reference to `_imp___ZN6Phonon11MediaObject5pauseEv' collect2: ld returned 1 exit status make[5]: *** [../../../../bin/assistant.exe] Error 1
Ктонить французский знает :D ? http://forum.qtfr.org/viewtopic.php?id=6270 хотя вот http://translate.google.ru/translate?hl=ru&sl=fr&u=http://forum.qtfr.org/viewtopic.php%3Fid%3D6270&ei=QQq9Sd6CIIyHsAb05qjoDg&sa=X&oi=translate&resnum=1&ct=result&prev=/search%3Fq%3Dhttp://forum.qtfr.org/viewtopic.php%253Fid%253D6270%26hl%3Dru%26lr%3D%26sa%3DG%26newwindow%3D1
|