开发者

Direct Show (AMCap) - Platform SDK

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.

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.

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

These errors looked like string mismatch errors, so tried to build them with unicode character set, and got the following errors.

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 &)" (?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 * &)const " (?GetNextI@CBaseList@@IBEPAXAAPAU__POSITION@@@Z) referenced in function "public: class CRouting * __thiscall CGenericList::GetNext(struct __POSITION * &)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

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!


Did you include BaseClasses in your library directory? You need to have your linker find Strmbase.lib (release) or Strmbasd.lib (debug).

Edit: I'm using vs2005 with PSDK 6.0 and it's working fine for me.


You can use either multibyte or unicode, so long as you have the same settings in both the base class project and the amcap project. Check unicode vs multibyte, and also check the settings for runtime (static or dll) wchar_t built in yes/no, calling convention etc. Make sure all these match.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜