Как скомпилировать образцы SDK VC++
Автор: Ольга Кровякова - изменено 10 октября 2023 г., создано 1 апреля 2019 г.
Предисловие:
SolveigMM Video Editing SDK был разработан с использованием DirectX SDK 9.0 (ноябрь 2000 г.). Поскольку эта версия больше не доступна для загрузки с веб-сайта Microsoft, здесь описано, как использовать все еще доступные версии.
Microsoft предлагает использовать Latest Platform SDK (Windows SDK 6.1) и Latest DirectX SDK (март 2009 г.) , но, к сожалению, сделать это непросто, так как там пропущены некоторые подсказки, например экземпляр — dxtrans.h
Итак, на данный момент есть два способа использования Microsoft SDK:
1. Microsoft Windows SDK для Windows Server 2008® и .NET Framework 3.5 (v6.1 ) + Обновление DirectX 9.0 SDK — (февраль 2005 г.)
2. Обновление DirectX 9.0 SDK — (февраль 2005 г.) + Дополнительное обновление DirectX 9.0 SDK — (февраль 2005 г.)
Для Microsoft Visual Studio 2008 и более поздних версий необходимо установить дополнительные SDK следующим образом:
Microsoft Windows SDK для Windows Server 2008® и .NET Framework 3.5 (v6.1 ) 1328,9 МБ
http://www.microsoft.com/downloads/details.aspx?FamilyID=E6E1C3DF-A74F-4207-8586-711EBE331CDC&displaylang=en
Обновление DirectX 9.0 SDK (февраль 2005 г.) Дополнительно 35,6 МБ
http://www.microsoft.com/downloads/details.aspx?FamilyId=8AF0AFA9-1383-44B4-BC8B-7D6315212323&displaylang=en
Базовые классы DirectShow должны быть скомпилированы со следующим ключом:
C/C++, язык, рассматривать wchar_t как встроенный тип — Нет (/Zc:wchar_t-)
После установки Windows SDK вам’потребуется скомпилировать базовые классы DirectShow, чтобы получить strmbase.lib и strmbasd.lib. По умолчанию базовые классы расположены здесь:
“Program FilesMicrosoft SDKWindowsv6.1SamplesMultimediaDirectShowBaseClasses”
Нельзя’путать Unicode и многобайтовые версии библиотек базовых классов&rsquo.
Обновите параметры вашей VisualStudio IDE: добавьте следующие пути в список Включает :
1)“Program FilesMicrosoft SDKsWindowsv6.1SamplesMultimediaDirectShowBaseClasses” - вы должны поместить этот путь в самое начало “Включает” ] список;
2)“DXSDKInclude”;
Добавьте следующие пути в список Библиотеки :
1)“Program FilesMicrosoft SDKsWindowsv6.1Lib”;
2)“Program FilesMicrosoft SDKsWindowsv6.1SamplesMultimediaDirectShowBaseClassesDebug”;
3)“Program FilesMicrosoft SDKsWindowsv6.1SamplesMultimediaDirectShowBaseClassesRelease” - Библиотеки базовых классов, скомпилированные в Юникоде;
4)“Program FilesMicrosoft SDKsWindowsv6.1SamplesMultimediaDirectShowBaseClassesDebug_MBCS”;
5)“Program FilesMicrosoft SDKsWindowsv6.1SamplesMultimediaDirectShowBaseClassesRelease_MBCS” - Библиотеки базовых классов, скомпилированные в формате MultiByte;
6)“DXSDKLib”;
Для Microsoft Visual Studio 2005 необходимо установить дополнительные SDK следующим образом:
1. Обновление DirectX 9.0 SDK — (февраль 2005 г.) 154,6 МБ
http://www.microsoft.com/downloads/details.aspx?FamilyID=77960733-06E9-47BA-914A-844575031B81&displaylang=en
2. Обновление DirectX 9.0 SDK (февраль 2005 г.) Дополнительно 35,6 МБ
http://www.microsoft.com/downloads/details.aspx?FamilyId=8AF0AFA9-1383-44B4-BC8B-7D6315212323&displaylang=en
Вот расположение каталогов заголовков и библиотек:
Дополнительное обновление DirectX 9.0 SDK (2-й пункт) содержит базовые классы DirectShow, которые необходимо скомпилировать и которые зависят от некоторых заголовков в обновлении DirectX 9.0 SDK (1-й пункт)
Решение BaseClasses находится в этой папке:
"..ExtrasDirectShowSamplesC++DirectShowBaseClassesaseclasses.sln"
К сожалению, некоторые заголовки требуют небольших изменений; в противном случае VC Studio выдает ошибки компиляции.
“..ExtrasDirectShowSamplesC++DirectShowBaseClassesctlutil.h”
COARefTime(ДЛИННЫЙ);
оператор = (ДЛИННЫЙ);
следует изменить на
COARefTime(ДЛИННЫЙ);
// оператор = (ДЛИННЫЙ);
COARefTime& оператор = (ДЛИННЫЙ);
“..ExtrasDirectShowSamplesC++DirectShowBaseClasseswxdebug.cpp”
статический g_dwLastRefresh = 0;
следует изменить на
статический DWORD g_dwLastRefresh = 0;
"..ExtrasDirectShowSamplesC++DirectShowBaseClasseswinutil.cpp"
for ( UINT Count = 0;Count < Result;Count++) {
следует изменить на
Количество UINT = 0;
for ( Count = 0;Count < Результат;Count++) {
"..ExtrasDirectShowSamplesC++DirectShowBaseClassesoutputq.cpp"
для (iDone = 0;
iDone < nSamples || (m_nBatched != 0 && m_bSendAnyway);
следует изменить на
длинный iDone = 0;
для (iDone = 0;
iDone < nSamples || (m_nBatched != 0 && m_bSendAnyway);
Базовые классы DirectShow должны быть скомпилированы со следующим ключом:
C/C++, язык, рассматривать wchar_t как встроенный тип — Нет (/Zc:wchar_t-)
Ольга Кровякова - менеджер технической поддержки в комании Solveig Multimedia с 2010 года.
Она является автором многих текстовых и видео инструкций по программным продуктам компании: Video Splitter, HyperCam, WMP Trimmer Plugin, AVI Trimmer+ и TriMP4.
Посколько она работает с программами каждый день, то хорошо знает как они работают. Свяжитесь с Ольгой по почте support@solveigmm.com, если у вас возникнут вопросы и она с радостью вам поможет!