вторник, 3 марта 2009 г.

Сборка Windows SDK 7

После установки, первое, что удивило - это замена makefile в Samples на sln+vcproj.
Хоть что-то изменилось.

Скопировал весь каталог BaseClasses в рабочий каталог и открыл в студии проект.
Студия предложила сконвертировать в новый формат. Сконвертировал, собираю...

>amfilter.cpp
1>c:\program files\microsoft sdks\windows\v7.0\include\objidl.h(11265) :
error C2061: syntax error : identifier '__RPC__out_xcount_part'
1>c:\program files\microsoft sdks\windows\v7.0\include\objidl.h(11266) :
error C2059: syntax error : ')'
1>c:\program files\microsoft sdks\windows\v7.0\include\objidl.h(11266) :
fatal error C1903: unable to recover from previous error(s); stopping compilation

Проблема оказалась в путях к заголовочным файлам, вернее в их порядке.
Переместив C:\Program Files (x86)\Microsoft DirectX SDK\Include в самый конец все
собралось на отлично.

Сборка avcap.

В 7 SDK удалили файл qedit.h!
Взял этот файл из SDK 6.0A.
Вернулась проблема dxtrans.h, которого все-таки больше не существует.

Отредактировал qedit.h

//#include "dxtrans.h" -- Line 498
IDxtCompositor //: public IDXEffect -- Line 837
IDxtAlphaSetter //: public IDXEffect -- Line 1151
IDxtJpeg //: public IDXEffect -- Line 1345
IDxtKey //: public IDXEffect -- Line 1735

Пересобираю... опять гора ошибок.
Оказывается, в SDK есть такие же заголовочные файлы, как и в
Samples\Multimedia\DirectShow\BaseClasses. Ладно, переставил порядок,
поставил Samples перед SDK.
Пересобираю...

1>c:\temp\avcap\avcap\windows\ds_devicedescriptor.cpp(477) :
error C2664: 'wsprintfW' : cannot convert parameter 1 from 'char [128]' to 'LPWSTR'
1> Types pointed to are unrelated; conversion requires reinterpret_cast,
C-style cast or function-style cast

"Жопой чую, конец близко" (с) Макс

Быстро поправляю типы данных и преобразования, пересобираю и вуаля!

1>avcap - 0 error(s), 0 warning(s)
2>captest - 0 error(s), 0 warning(s)
========== Build: 2 succeeded, 0 failed, 0 up-to-date, 0 skipped ==========

Протестировал, все работает на отлично.

Все просто!

4 комментария:

Анонимный комментирует...

Спасибо, помогло

Анонимный комментирует...

Спасибо, мне тоже помогло!
А почему Studio так нервно реагирует на порядок описания include? впрочем Mircosoft в своем стиле =\

Андрей Булавинов комментирует...

Пережитки старой версии.

Анонимный комментирует...

На сайте вместо правки непосредственно файла qedit.h рекомендуют в рабочем каталоге проекта создать файл dxtrans.h и прописать в него следующие строки:
#define __IDxtCompositor_INTERFACE_DEFINED__
#define __IDxtAlphaSetter_INTERFACE_DEFINED__
#define __IDxtJpeg_INTERFACE_DEFINED__
#define __IDxtKey_INTERFACE_DEFINED__