title: Direct Show (AMCap) - Platform SDK
body: <p>I am trying to capture images from multiple web cams simultaneously and save them automatically with minimum delay using C++. I also want the program to be able to alter the parameters of the web cam when ever needed. I was hoping to build Direct show samples (AMCap) on Platform SDK, and then edit the code to suit my application. But i keep getting errors. </p>
  
  <p>I was able to build the base classes and included the paths under 'include' and 'library files'. I got the following errors when I was trying to build AMCap. I am working on XP with Visual Studio 2008.</p>
  
  <pre><code>Compiling...
  amcap.cpp
  d:\program files\microsoft sdks\windows\v6.1\samples\multimedia\directshow\capture\amcap\amcap.cpp(231) : error C2664: 'StringCchCatA' : cannot convert parameter 3 from 'WCHAR [260]' to 'STRSAFE_LPCSTR'
          Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast
  d:\program files\microsoft sdks\windows\v6.1\samples\multimedia\directshow\capture\amcap\amcap.cpp(327) : error C2664: 'GetProfileStringA' : cannot convert parameter 4 from 'WCHAR [260]' to 'LPSTR'
          Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast
  d:\program files\microsoft sdks\windows\v6.1\samples\multimedia\directshow\capture\amcap\amcap.cpp(2691) : error C2664: 'statusUpdateStatus' : cannot convert parameter 2 from 'WCHAR [120]' to 'LPCTSTR'
          Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast
  d:\program files\microsoft sdks\windows\v6.1\samples\multimedia\directshow\capture\amcap\amcap.cpp(2698) : error C2664: 'StringCchCopyNA' : cannot convert parameter 1 from 'WCHAR [1024]' to 'STRSAFE_LPSTR'
          Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast
  d:\program files\microsoft sdks\windows\v6.1\samples\multimedia\directshow\capture\amcap\amcap.cpp(2699) : error C2664: 'StringCchCopyNA' : cannot convert parameter 1 from 'WCHAR [1024]' to 'STRSAFE_LPSTR'
          Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast
  d:\program files\microsoft sdks\windows\v6.1\samples\multimedia\directshow\capture\amcap\amcap.cpp(2831) : error C2664: 'AppendMenuA' : cannot convert parameter 4 from 'BSTR' to 'LPCSTR'
          Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast
  d:\program files\microsoft sdks\windows\v6.1\samples\multimedia\directshow\capture\amcap\amcap.cpp(2887) : error C2664: 'AppendMenuA' : cannot convert parameter 4 from 'BSTR' to 'LPCSTR'
          Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast
  d:\program files\microsoft sdks\windows\v6.1\samples\multimedia\directshow\capture\amcap\amcap.cpp(3792) : error C2664: 'StringCchCopyA' : cannot convert parameter 3 from 'WCHAR [260]' to 'STRSAFE_LPCSTR'
          Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast
  d:\program files\microsoft sdks\windows\v6.1\samples\multimedia\directshow\capture\amcap\amcap.cpp(3838) : error C2664: 'OpenFileDialog' : cannot convert parameter 2 from 'WCHAR [260]' to 'LPTSTR'
          Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast
  d:\program files\microsoft sdks\windows\v6.1\samples\multimedia\directshow\capture\amcap\amcap.cpp(3844) : error C2664: 'GetFileAttributesA' : cannot convert parameter 1 from 'WCHAR [260]' to 'LPCSTR'
          Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast
  d:\program files\microsoft sdks\windows\v6.1\samples\multimedia\directshow\capture\amcap\amcap.cpp(3904) : error C2664: 'ICaptureGraphBuilder2::CopyCaptureFile' : cannot convert parameter 2 from 'TCHAR [260]' to 'LPOLESTR'
          Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast
  d:\program files\microsoft sdks\windows\v6.1\samples\multimedia\directshow\capture\amcap\amcap.cpp(4108) : error C2664: 'GetSize' : cannot convert parameter 1 from 'WCHAR [260]' to 'LPCTSTR'
          Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast
  d:\program files\microsoft sdks\windows\v6.1\samples\multimedia\directshow\capture\amcap\amcap.cpp(4112) : error C2664: 'GetFreeDiskSpaceInKB' : cannot convert parameter 1 from 'WCHAR [260]' to 'LPTSTR'
          Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast
  d:\program files\microsoft sdks\windows\v6.1\samples\multimedia\directshow\capture\amcap\amcap.cpp(4165) : error C2664: '_wtol' : cannot convert parameter 1 from 'TCHAR [21]' to 'const wchar_t *'
          Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast
  d:\program files\microsoft sdks\windows\v6.1\samples\multimedia\directshow\capture\amcap\amcap.cpp(4240) : error C2664: '_wtof' : cannot convert parameter 1 from 'TCHAR [32]' to 'const wchar_t *'
          Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast
  d:\program files\microsoft sdks\windows\v6.1\samples\multimedia\directshow\capture\amcap\amcap.cpp(4392) : error C2664: 'WriteProfileStringA' : cannot convert parameter 3 from 'WCHAR [260]' to 'LPCSTR'
          Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast
  d:\program files\microsoft sdks\windows\v6.1\samples\multimedia\directshow\capture\amcap\amcap.cpp(4403) : error C2664: 'StringCchCopyNA' : cannot convert parameter 3 from 'WCHAR *' to 'STRSAFE_LPCSTR'
          Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast
  d:\program files\microsoft sdks\windows\v6.1\samples\multimedia\directshow\capture\amcap\amcap.cpp(4421) : error C2664: 'StringCchCopyA' : cannot convert parameter 3 from 'WCHAR *' to 'STRSAFE_LPCSTR'
          Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast
  </code></pre>
  
  <p>These errors looked like string mismatch errors, so tried to build them with unicode character set, and got the following errors.</p>
  
  <pre><code>Compiling...
  amcap.cpp
  crossbar.cpp
  SampleCGB.cpp
  status.cpp
  stdafx.cpp
  Generating Code...
  Compiling resources...
  Microsoft (R) Windows (R) Resource Compiler Version 6.0.5724.0
  Copyright (C) Microsoft Corporation.  All rights reserved.
  Linking...
  amcap.obj : error LNK2019: unresolved external symbol "void __stdcall DbgAssert(unsigned short const *,unsigned short const *,int)" (?DbgAssert@@YGXPBG0H@Z) referenced in function "int __cdecl AppInit(struct HINSTANCE__ *,struct HINSTANCE__ *,int)" (?AppInit@@YAHPAUHINSTANCE__@@0H@Z)
  crossbar.obj : error LNK2001: unresolved external symbol "void __stdcall DbgAssert(unsigned short const *,unsigned short const *,int)" (?DbgAssert@@YGXPBG0H@Z)
  SampleCGB.obj : error LNK2001: unresolved external symbol "void __stdcall DbgAssert(unsigned short const *,unsigned short const *,int)" (?DbgAssert@@YGXPBG0H@Z)
  amcap.obj : error LNK2001: unresolved external symbol _AM_KSCATEGORY_CAPTURE
  amcap.obj : error LNK2001: unresolved external symbol _IID_IBaseFilter
  crossbar.obj : error LNK2001: unresolved external symbol _IID_IBaseFilter
  SampleCGB.obj : error LNK2019: unresolved external symbol _IID_IBaseFilter referenced in function "protected: long __thiscall ISampleCaptureGraphBuilder::GetMedium(struct IPin *,struct __MIDL___MIDL_itf_strmif_0000_0022_0003 &amp;)" (?GetMedium@ISampleCaptureGraphBuilder@@IAEJPAUIPin@@AAU__MIDL___MIDL_itf_strmif_0000_0022_0003@@@Z)
  amcap.obj : error LNK2019: unresolved external symbol __imp__timeGetTime@0 referenced in function "long __stdcall AppWndProc(struct HWND__ *,unsigned int,unsigned int,long)" (?AppWndProc@@YGJPAUHWND__@@IIJ@Z)
  amcap.obj : error LNK2001: unresolved external symbol _CLSID_CaptureGraphBuilder2
  amcap.obj : error LNK2001: unresolved external symbol _IID_ICaptureGraphBuilder2
  amcap.obj : error LNK2001: unresolved external symbol _CLSID_FilterGraph
  amcap.obj : error LNK2001: unresolved external symbol _IID_IGraphBuilder
  amcap.obj : error LNK2001: unresolved external symbol _PIN_CATEGORY_CC
  amcap.obj : error LNK2001: unresolved external symbol _PIN_CATEGORY_VBI
  amcap.obj : error LNK2001: unresolved external symbol _MEDIATYPE_Audio
  SampleCGB.obj : error LNK2001: unresolved external symbol _MEDIATYPE_Audio
  amcap.obj : error LNK2001: unresolved external symbol _PIN_CATEGORY_ANALOGVIDEOIN
  amcap.obj : error LNK2001: unresolved external symbol _AMPROPSETID_Pin
  amcap.obj : error LNK2001: unresolved external symbol _IID_IKsPropertySet
  amcap.obj : error LNK2001: unresolved external symbol _IID_IAMVfwCaptureDialogs
  amcap.obj : error LNK2019: unresolved external symbol "void __stdcall DeleteMediaType(struct _AMMediaType *)" (?DeleteMediaType@@YGXPAU_AMMediaType@@@Z) referenced in function "int __cdecl InitCapFilters(void)" (?InitCapFilters@@YAHXZ)
  SampleCGB.obj : error LNK2001: unresolved external symbol "void __stdcall DeleteMediaType(struct _AMMediaType *)" (?DeleteMediaType@@YGXPAU_AMMediaType@@@Z)
  amcap.obj : error LNK2001: unresolved external symbol _FORMAT_VideoInfo
  amcap.obj : error LNK2001: unresolved external symbol _IID_IAMStreamConfig
  amcap.obj : error LNK2001: unresolved external symbol _MEDIATYPE_Video
  SampleCGB.obj : error LNK2001: unresolved external symbol _MEDIATYPE_Video
  amcap.obj : error LNK2001: unresolved external symbol _PIN_CATEGORY_CAPTURE
  amcap.obj : error LNK2001: unresolved external symbol _MEDIATYPE_Interleaved
  amcap.obj : error LNK2001: unresolved external symbol _IID_IAMVideoCompression
  amcap.obj : error LNK2001: unresolved external symbol _IID_IMediaEventEx
  amcap.obj : error LNK2001: unresolved external symbol _IID_IVideoWindow
  amcap.obj : error LNK2001: unresolved external symbol _MEDIATYPE_Stream
  SampleCGB.obj : error LNK2001: unresolved external symbol _MEDIATYPE_Stream
  amcap.obj : error LNK2001: unresolved external symbol _PIN_CATEGORY_PREVIEW
  amcap.obj : error LNK2001: unresolved external symbol _IID_IConfigAviMux
  amcap.obj : error LNK2001: unresolved external symbol _MEDIASUBTYPE_Avi
  amcap.obj : error LNK2001: unresolved external symbol _IID_IBasicVideo
  amcap.obj : error LNK2001: unresolved external symbol _FORMAT_DvInfo
  amcap.obj : error LNK2001: unresolved external symbol _IID_IMediaControl
  amcap.obj : error LNK2001: unresolved external symbol _IID_IAMDroppedFrames
  amcap.obj : error LNK2001: unresolved external symbol _IID_IAMTVAudio
  amcap.obj : error LNK2001: unresolved external symbol _IID_IAMTVTuner
  amcap.obj : error LNK2001: unresolved external symbol _LOOK_UPSTREAM_ONLY
  amcap.obj : error LNK2001: unresolved external symbol _IID_IAMCrossbar
  crossbar.obj : error LNK2001: unresolved external symbol _IID_IAMCrossbar
  amcap.obj : error LNK2001: unresolved external symbol _CLSID_AudioInputDeviceCategory
  amcap.obj : error LNK2001: unresolved external symbol _CLSID_VideoInputDeviceCategory
  amcap.obj : error LNK2001: unresolved external symbol _CLSID_SystemDeviceEnum
  SampleCGB.obj : error LNK2001: unresolved external symbol _CLSID_SystemDeviceEnum
  amcap.obj : error LNK2001: unresolved external symbol _IID_ICreateDevEnum
  SampleCGB.obj : error LNK2001: unresolved external symbol _IID_ICreateDevEnum
  amcap.obj : error LNK2019: unresolved external symbol _acmFormatChooseW@4 referenced in function "void __cdecl ChooseAudioFormat(void)" (?ChooseAudioFormat@@YAXXZ)
  amcap.obj : error LNK2019: unresolved external symbol _acmMetrics@12 referenced in function "void __cdecl ChooseAudioFormat(void)" (?ChooseAudioFormat@@YAXXZ)
  amcap.obj : error LNK2001: unresolved external symbol _IID_IAMCopyCaptureFileProgress
  crossbar.obj : error LNK2019: unresolved external symbol "void __cdecl DbgLogInfo(unsigned long,unsigned long,unsigned short const *,...)" (?DbgLogInfo@@YAXKKPBGZZ) referenced in function "public: __thiscall CCrossbar::CCrossbar(struct IPin *,long *)" (??0CCrossbar@@QAE@PAUIPin@@PAJ@Z)
  crossbar.obj : error LNK2019: unresolved external symbol "public: __thiscall CBaseList::~CBaseList(void)" (??1CBaseList@@QAE@XZ) referenced in function "public: __thiscall CGenericList::~CGenericList(void)" (??1?$CGenericList@VCRouting@@@@QAE@XZ)
  crossbar.obj : error LNK2019: unresolved external symbol "public: __thiscall CBaseList::CBaseList(unsigned short const *,int)" (??0CBaseList@@QAE@PBGH@Z) referenced in function "public: __thiscall CGenericList::CGenericList(unsigned short const *,int,int,int)" (??0?$CGenericList@VCRouting@@@@QAE@PBGHHH@Z)
  crossbar.obj : error LNK2019: unresolved external symbol "protected: void * __thiscall CBaseList::GetNextI(struct __POSITION * &amp;)const " (?GetNextI@CBaseList@@IBEPAXAAPAU__POSITION@@@Z) referenced in function "public: class CRouting * __thiscall CGenericList::GetNext(struct __POSITION * &amp;)const " (?GetNext@?$CGenericList@VCRouting@@@@QBEPAVCRouting@@AAPAU__POSITION@@@Z)
  crossbar.obj : error LNK2019: unresolved external symbol "protected: void * __thiscall CBaseList::RemoveHeadI(void)" (?RemoveHeadI@CBaseList@@IAEPAXXZ) referenced in function "public: class CRouting * __thiscall CGenericList::RemoveHead(void)" (?RemoveHead@?$CGenericList@VCRouting@@@@QAEPAVCRouting@@XZ)
  crossbar.obj : error LNK2019: unresolved external symbol "protected: struct __POSITION * __thiscall CBaseList::AddTailI(void *)" (?AddTailI@CBaseList@@IAEPAU__POSITION@@PAX@Z) referenced in function "public: struct __POSITION * __thiscall CGenericList::AddTail(class CRouting *)" (?AddTail@?$CGenericList@VCRouting@@@@QAEPAU__POSITION@@PAVCRouting@@@Z)
  crossbar.obj : error LNK2019: unresolved external symbol "protected: void * __thiscall CBaseList::GetI(struct __POSITION *)const " (?GetI@CBaseList@@IBEPAXPAU__POSITION@@@Z) referenced in function "public: class CRouting * __thiscall CGenericList::Get(struct __POSITION *)const " (?Get@?$CGenericList@VCRouting@@@@QBEPAVCRouting@@PAU__POSITION@@@Z)
  SampleCGB.obj : error LNK2001: unresolved external symbol _MEDIASUBTYPE_MPEG2_PROGRAM
  SampleCGB.obj : error LNK2001: unresolved external symbol _MEDIASUBTYPE_MPEG2_VIDEO
  SampleCGB.obj : error LNK2001: unresolved external symbol _CLSID_FilterMapper2
  SampleCGB.obj : error LNK2001: unresolved external symbol _IID_IFilterMapper2
  SampleCGB.obj : error LNK2001: unresolved external symbol _IID_IKsPin
  SampleCGB.obj : error LNK2001: unresolved external symbol _CLSID_MPEG2Demultiplexer
  SampleCGB.obj : error LNK2001: unresolved external symbol _FORMAT_MPEG2Video
  SampleCGB.obj : error LNK2001: unresolved external symbol _FORMAT_WaveFormatEx
  SampleCGB.obj : error LNK2001: unresolved external symbol _MEDIASUBTYPE_MPEG2_AUDIO
  SampleCGB.obj : error LNK2001: unresolved external symbol _IID_IMpeg2Demultiplexer
  D:\Documents and Settings\Chris Salthouse\My Documents\Visual Studio 2008\Projects\AMCap\Debug\AMCap.exe : fatal error LNK1120:60 unresolved externals
  </code></pre>
  
  <p>Should I use Unicode or Multi byte ? I dont understand what is causing the problem. Any help or advise is appreciated. Thank you so much for your time!</p>