На моем компьютере Xp64 мне удалось собрать библиотеки базовых классов DirectShow для запуска примера amcap. У меня установлен Microsoft DirectX SDK в июне 2010 года, а также Microsoft Windows SDK для Windows 7 (7.1) со всеми компиляторами C / C ++.
Сначала мы должны скомпилировать базовые классы DirectShow:
открыть обычный старый cmd.exe
cd C:\Program Files\Microsoft SDKs\Windows\v7.1\Samples\multimedia\directshow\baseclasses
Если вы получаете сообщение об ошибке, если VCBuild.exe не установлен, это потому, что
sln и различные файлы проекта (например, C / C ++ vcproj ) являются древними, следующая команда будет
обновите их, изменив старые файлы stanky vcproj на новые файлы crappy vcxproj
VCUpgrade находится здесь на моей машине:
C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\Tools\vcupgrade.exe
Обратите внимание, что даже после попытки различных комбинаций параметров для vcupgrade ,
сборка sln с помощью msbuild не требуется (docs be dangs), поэтому мне пришлось напрямую
скомпилировать проект Я все равно оставил командный файл var с именем SLN, потому что я настоящий революционер
VCUpgrade -nologo -overwrite baseclasses.vcproj
Это упрощает компиляцию различных конфигураций.
set SLN="baseclasses.vcxproj"
Обратите внимание, что базовые классы Release build делают strmbase.lib
и Debug делает strmbasd.lib
amcap требуется сборка Release , так как сборка amcap может быть отлажена
A) Компилировать Выпуск Win32 (== x86)
Использование MsSdk SetEnv.Cmd позволяет вам избежать всего этого vsvars32.bat болото, а также
как 8 миллионов различных оболочек CMD, которые были специально разработаны, чтобы быть одним
или два роковых недостатка от реальной работы, полагаясь на вызывающую эплипсию сеть
пакетные файлы, чтобы сделать их вещь (эй! может быть, два связаны!?)
"C:\Program Files\Microsoft SDKs\Windows\v7.1\Bin\SetEnv.Cmd" /release /x86 /xp
Мне не повезло с использованием 64-битной версии MSBuild (может быть, цели?),
но x86 MSBuild работает без проблем
"C:\WINDOWS\Microsoft.NET\Framework\v4.0.30319\MSBuild.exe" %SLN% /p:Configuration=Release /p:Platform=Win32
B) Компилировать Выпуск X64
"C:\Program Files\Microsoft SDKs\Windows\v7.1\Bin\SetEnv.Cmd" /release /x64 /2003
"C:\WINDOWS\Microsoft.NET\Framework\v4.0.30319\MSBuild.exe" %SLN% /p:Configuration=Release /p:Platform=X64
Во-вторых, теперь мы можем скомпилировать обе версии amcap
открыть обычный старый cmd.exe
cd C:\Program Files\Microsoft SDKs\Windows\v7.1\Samples\multimedia\directshow\capture\amcap
VCUpgrade vcproj до vcxproj
VCUpgrade -nologo -overwrite amcap.vcproj
set SLN="amcap.vcxproj"
A) Компиляция Отладка Win32 (== x86)
Установить компилятор, lib, include, ... paths и затем скомпилировать
"C:\Program Files\Microsoft SDKs\Windows\v7.1\Bin\SetEnv.Cmd" /debug /x86 /xp
"C:\WINDOWS\Microsoft.NET\Framework\v4.0.30319\MSBuild.exe" %SLN% /p:Configuration=Debug /p:Platform=Win32
B) Компиляция Отладка X64
"C:\Program Files\Microsoft SDKs\Windows\v7.1\Bin\SetEnv.Cmd" /debug /x64 /2003
"C:\WINDOWS\Microsoft.NET\Framework\v4.0.30319\MSBuild.exe" %SLN% /p:Configuration=Debug /p:Platform=X64
Я использовал SysInternals * Process Explorer *, чтобы убедиться, что каждый исполняемый файл был 32-битным и 64-битным соответственно. Кажется необъяснимым, что большинство разработчиков, с которыми я работал, даже не знают о Process Explorer - я занимаюсь этим весь день. И да, это то, что она сказала.