Russian Qt Forum

Qt => Установка, сборка, отладка, тестирование => Тема начата: SABROG от Март 07, 2009, 12:52



Название: 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