Russian Qt Forum

Qt => Мультимедиа => Тема начата: Etud от Декабрь 17, 2009, 01:09



Название: Сборка Phonon в VS2008
Отправлено: Etud от Декабрь 17, 2009, 01:09
Подскажите плиз как правильно установить Phonon, так как ошибка линковки ?

Почитал в Интернет статьи:
- Compilation of Phonon under Windows XP
- How to Compile Qt Phonon in Windows Vista

Для установки требуется:
1) Microsoft SDKs
2) Microsoft DirectX SDK


Конфигурация Qt (статическая):
Код:
configure -static -release -no-exceptions -no-qt3support 
-openssl -webkit -qt-zlib -qt-gif -qt-libpng -qt-libjpeg -phonon

Прописал системные переменные:
INCLUDE
C:\Program Files\Microsoft SDKs\Windows\v6.0A\Include
LIB
C:\Program Files\Microsoft SDKs\Windows\v6.0A\Lib

Но Microsoft DirectX SDK не устанавливал, т.к. DirectShow вроде работает...


После сборки:
1) в каталоге C:\qt\4.5.3\lib  появилась либа phonon;
2) в каталоге C:\qt\4.5.3\plugins\phonon_backend появилась либа phonon_ds9.

но mediaplayer из \demos\ не собирается, т.к. ошибки линковки.

А нужно ли еще эта опция конфигурации ???
-phonon -phonon-backend



Название: Re: Сборка Phonon в VS2008
Отправлено: Etud от Декабрь 17, 2009, 01:13
Log

Код:
Output Window 
  RCC mediaplayer.qrc
MOC mediaplayer.h
Compiling...
qrc_mediaplayer.cpp
moc_mediaplayer.cpp
mediaplayer.cpp
main.cpp
Generating Code...
Linking...
   Creating library release\mediaplayer.lib and object release\mediaplayer.exp
main.obj : warning LNK4217: locally defined symbol ??1AudioOutput@Phonon@@UAE@XZ (public: virtual __thiscall Phonon::AudioOutput::~AudioOutput(void)) imported in function __unwindfunclet$??1MediaPlayer@@UAE@XZ$0
mediaplayer.obj : warning LNK4049: locally defined symbol ??1AudioOutput@Phonon@@UAE@XZ (public: virtual __thiscall Phonon::AudioOutput::~AudioOutput(void)) imported
main.obj : warning LNK4217: locally defined symbol ??1MediaObject@Phonon@@UAE@XZ (public: virtual __thiscall Phonon::MediaObject::~MediaObject(void)) imported in function "public: virtual __thiscall MediaPlayer::~MediaPlayer(void)" (??1MediaPlayer@@UAE@XZ)
mediaplayer.obj : warning LNK4049: locally defined symbol ??1MediaObject@Phonon@@UAE@XZ (public: virtual __thiscall Phonon::MediaObject::~MediaObject(void)) imported
main.obj : warning LNK4217: locally defined symbol ??1AbstractAudioOutput@Phonon@@UAE@XZ (public: virtual __thiscall Phonon::AbstractAudioOutput::~AbstractAudioOutput(void)) imported in function "public: virtual __thiscall MediaPlayer::~MediaPlayer(void)" (??1MediaPlayer@@UAE@XZ)
mediaplayer.obj : warning LNK4049: locally defined symbol ??1AbstractAudioOutput@Phonon@@UAE@XZ (public: virtual __thiscall Phonon::AbstractAudioOutput::~AbstractAudioOutput(void)) imported
main.obj : warning LNK4217: locally defined symbol ??1Path@Phonon@@QAE@XZ (public: __thiscall Phonon::Path::~Path(void)) imported in function "public: virtual __thiscall MediaPlayer::~MediaPlayer(void)" (??1MediaPlayer@@UAE@XZ)
mediaplayer.obj : warning LNK4049: locally defined symbol ??1Path@Phonon@@QAE@XZ (public: __thiscall Phonon::Path::~Path(void)) imported
mediaplayer.obj : warning LNK4217: locally defined symbol ??1VideoWidget@Phonon@@UAE@XZ (public: virtual __thiscall Phonon::VideoWidget::~VideoWidget(void)) imported in function __unwindfunclet$??0MediaVideoWidget@@QAE@PAVMediaPlayer@@PAVQWidget@@@Z$0
mediaplayer.obj : warning LNK4217: locally defined symbol ??0VideoWidget@Phonon@@QAE@PAVQWidget@@@Z (public: __thiscall Phonon::VideoWidget::VideoWidget(class QWidget *)) imported in function "public: __thiscall MediaVideoWidget::MediaVideoWidget(class MediaPlayer *,class QWidget *)" (??0MediaVideoWidget@@QAE@PAVMediaPlayer@@PAVQWidget@@@Z)
mediaplayer.obj : warning LNK4217: locally defined symbol ?setFullScreen@VideoWidget@Phonon@@QAEX_N@Z (public: void __thiscall Phonon::VideoWidget::setFullScreen(bool)) imported in function "protected: virtual void __thiscall MediaVideoWidget::mouseDoubleClickEvent(class QMouseEvent *)" (?mouseDoubleClickEvent@MediaVideoWidget@@MAEXPAVQMouseEvent@@@Z)
mediaplayer.obj : warning LNK4217: locally defined symbol ?play@MediaObject@Phonon@@QAEXXZ (public: void __thiscall Phonon::MediaObject::play(void)) imported in function "public: void __thiscall MediaPlayer::playPause(void)" (?playPause@MediaPlayer@@QAEXXZ)
mediaplayer.obj : warning LNK4217: locally defined symbol ?seek@MediaObject@Phonon@@QAEX_J@Z (public: void __thiscall Phonon::MediaObject::seek(__int64)) imported in function "public: void __thiscall MediaPlayer::playPause(void)" (?playPause@MediaPlayer@@QAEXXZ)
mediaplayer.obj : warning LNK4217: locally defined symbol ?currentTime@MediaObject@Phonon@@QBE_JXZ (public: __int64 __thiscall Phonon::MediaObject::currentTime(void)const ) imported in function "public: void __thiscall MediaPlayer::playPause(void)" (?playPause@MediaPlayer@@QAEXXZ)
mediaplayer.obj : warning LNK4217: locally defined symbol ?totalTime@MediaObject@Phonon@@QBE_JXZ (public: __int64 __thiscall Phonon::MediaObject::totalTime(void)const ) imported in function "public: void __thiscall MediaPlayer::playPause(void)" (?playPause@MediaPlayer@@QAEXXZ)
mediaplayer.obj : warning LNK4217: locally defined symbol ?pause@MediaObject@Phonon@@QAEXXZ (public: void __thiscall Phonon::MediaObject::pause(void)) imported in function "public: void __thiscall MediaPlayer::playPause(void)" (?playPause@MediaPlayer@@QAEXXZ)

................
release\mediaplayer.exe : fatal error LNK1120: 2 unresolved externals


Название: Re: Сборка Phonon в VS2008
Отправлено: crackedmind от Декабрь 17, 2009, 22:59
Вообще нужна эти опции. А то qmake не будет дописывать в makefile'ы нужные либы. Можно сделать так:
Открыть qt\4.6.0\mkspecs\qtconfig.pri добавить phonon phonon-backend к переменной QT_CONFIG :)


Название: Re: Сборка Phonon в VS2008
Отправлено: Etud от Декабрь 18, 2009, 00:01
 >:(

1) Пишут, что Phonon вроде бы работает для динамической линковки !
   Так ли скажите ?

2) Нужна ли DirectX SDK обязательно ? (лень пока пересобирать)

P.S. Попробовал Qt 4.6 - так все либы в bin уже собраны
и примеры работают, но динамически



Название: Re: Сборка Phonon в VS2008
Отправлено: Dendy от Декабрь 18, 2009, 00:44
Для самого Фонона SDK не нужна, а для бекенда - нужна, так что ставьте. Пересобрать нужно будет только бекенд.


Название: Re: Сборка Phonon в VS2008
Отправлено: Etud от Декабрь 18, 2009, 14:22
Еще раз спрошу:

Цитировать
Phonon работает только для динамической линковки ?



Название: Re: Сборка Phonon в VS2008
Отправлено: Dendy от Декабрь 18, 2009, 18:24
Уверен, что можно собрать и статически, только вместе с бекендами. А это значит что все зависимости как самого Фонона, так и конкретных бекендов должны быть разрешены до configure. Дальше не подскажу, ибо не сбирал.