2013-11-28 5 views
2

MSDN link에 제공된 UVC 확장 유닛 코드를 수정하려고합니다. 저는 XUProxy.cpp에서 제공되는 CExtension 클래스에 추가 메서드를 추가했습니다. 추가 된 모든 메소드는 interface.idl 파일에도 포함됩니다.UVC 확장 유닛과 Directshow 통합

다음은 코드 단편입니다. http://msdn.microsoft.com/en-us/library/windows/desktop/dd377566%28v=vs.85%29.aspx에 제공된

STDMETHODIMP CExtension::GetAllCapDevices(
     PDEVICELIST pList, 
     ULONG *pulDevCount, 
     ULONG ulListNum) 
{ 
    HRESULT hr = S_OK; 
    IEnumMoniker *pEnum; 

    CoInitializeEx(NULL, COINIT_MULTITHREADED); 

    hr = EnumerateDevices(CLSID_VideoInputDeviceCategory, &pEnum); 
    if (SUCCEEDED(hr)) 
    { 
     DisplayDeviceInformation(pEnum); 
     pEnum->Release(); 
    } 

    return hr; 
} 

EnumerateDevices DisplayDeviceInformation과 동일하다.

다음과 같이 streams.h, strmbase.lib 및 strmiids.lib를 소스 파일에 추가했습니다. 내가받는이 소스 파일에 다음과 같은 오류를 구축

TARGETLIBS= \ 
     $(SDK_LIB_PATH)\kernel32.lib   \ 
     $(SDK_LIB_PATH)\user32.lib    \ 
     $(SDK_LIB_PATH)\gdi32.lib    \ 
     $(SDK_LIB_PATH)\advapi32.lib   \ 
     $(SDK_LIB_PATH)\comdlg32.lib   \ 
     $(SDK_LIB_PATH)\ole32.lib    \ 
     $(SDK_LIB_PATH)\oleaut32.lib   \ 
     $(SDK_LIB_PATH)\uuid.lib    \ 
     $(SDK_LIB_PATH)\comctl32.lib   \ 
     $(SDK_LIB_PATH)\i386\stream.lib   \ 
     $(SDK_LIB_PATH)\i386\strmbase.lib  \ 
     $(SDK_LIB_PATH)\i386\strmiids.lib  \ 
     $(SDK_LIB_PATH)\i386\strsafe.lib 

INCLUDES=\ 
    C:\Program Files\Microsoft SDKs\Windows\v6.1\Include\ 

> /Fdd:\uvcextensionunit\win7build\objchk_win7_x86\i386\ 
1> /DKMDF_MAJOR_VERSION_STRING=01 
1> /DKMDF_MINOR_VERSION_STRING=009 
1> /wd4603 
1> /wd4627 
1> /typedil- 
1> /FIC:\WinDDK\7600.16385.1\inc\api\warning.h 
1> .\xuplugin.cpp .\stdafx.cpp .\xuproxy.cpp 
1>xuplugin.cpp 
1>stdafx.cpp 
1>statreg.cpp is obsolete. Please remove it from your project. 
1>atlimpl.cpp is obsolete. Please remove it from your project. 
1>xuproxy.cpp 
1>c:\program files\microsoft sdks\windows\baseclasses\streams.h(152) : fatal error C1083: Cannot open include file: 'strmif.h': No such file or directory 
1>Generating Code... 
1> C:\WinDDK\7600.16385.1\Bin\x86\oacr\oacrlink /lib /out:d:\uvcextensionunit\win7build\objchk_win7_x86\i386\XUPlugin.lib @d:\uvcextensionunit\win7build\objchk_win7_x86\i386\lib.rsp 
1>Microsoft (R) Library Manager Version 9.00.30729.207 
1>Copyright (C) Microsoft Corporation. All rights reserved. 
1>/IGNORE:4198,4010,4037,4039,4065,4070,4078,4087,4089,4221 
1>/WX 
1>/nodefaultlib 
1>/machine:ix86 
1>/def:XUPlugin.def 
1>d:\uvcextensionunit\win7build\objchk_win7_x86\i386\xuplugin_i.obj 
1>d:\uvcextensionunit\win7build\objchk_win7_x86\i386\xuplugin.obj 
1>d:\uvcextensionunit\win7build\objchk_win7_x86\i386\stdafx.obj 
1>d:\uvcextensionunit\win7build\objchk_win7_x86\i386\xuproxy.obj 
1>LINK : fatal error LNK1181: cannot open input file 'd:\uvcextensionunit\win7build\objchk_win7_x86\i386\xuproxy.obj' 
1>errors in directory d:\uvcextensionunit\win7build 
1>link : error LNK1181: cannot open input file 'd:\uvcextensionunit\win7build\objchk_win7_x86\i386\xuproxy.obj' 
Compile errors: not linking d:\uvcextensionunit\win7build directory ************* 

내가 SOURCE 파일의 구문에서 실수를 마십시오 (빌드 로그 파일에서 일부 세부 사항을했다)? SOURCE 파일의 INCLUDES 필드에 Platform SDK의 경로를 포함했습니다. 나는 이것에서 다른 것을 놓치고 있니?

미리 감사드립니다.

답변

0

헤더 파일에 포함 된 헤더 파일의 순서와 내 프로젝트의 소스 파일 인 cpp 을 재정렬하여 문제를 해결했습니다.

C/C++ include file order/best practices

다음 링크에 모습 또한 내가 완벽하게 :-)

당신에게 스택 오버플로 얘들 감사 UVC 확장 단위 작업을 만들었습니다.