Direct Show (AMCap) - Платформа SDK - PullRequest
       8

Direct Show (AMCap) - Платформа SDK

0 голосов
/ 14 января 2010

Я пытаюсь захватывать изображения с нескольких веб-камер одновременно и автоматически сохранять их с минимальной задержкой, используя C ++. Я также хочу, чтобы программа могла изменять параметры веб-камеры при необходимости. Я надеялся собрать образцы Direct show (AMCap) на Platform SDK, а затем отредактировать код в соответствии с моим приложением. Но я продолжаю получать ошибки.

Я смог построить базовые классы и включил пути в «include» и «library files». Я получил следующие ошибки, когда я пытался построить AMCap. Я работаю на XP с 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

Эти ошибки выглядели как ошибки несоответствия строк, поэтому попытались построить их с помощью набора символов Unicode и получили следующие ошибки.

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

Должен ли я использовать Unicode или Multi-Byte? Я не понимаю, что является причиной проблемы. Любая помощь или совет приветствуется. Большое вам спасибо за ваше время!

Ответы [ 2 ]

3 голосов
/ 15 января 2010

Включили ли вы BaseClasses в каталог вашей библиотеки? Вам нужно, чтобы ваш компоновщик нашел Strmbase.lib (выпуск) или Strmbasd.lib (отладка).

Редактировать: я использую vs2005 с PSDK 6.0, и он прекрасно работает для меня.

2 голосов
/ 14 января 2010

Вы можете использовать многобайтовый или юникод, если у вас одинаковые настройки как в проекте базового класса, так и в проекте amcap. Проверьте юникод против многобайтовых, а также проверьте настройки времени выполнения (статическое или dll), встроенного в yes / no wchar_t, соглашения о вызовах и т. Д. Убедитесь, что все они совпадают.

...