2013-11-28 17 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 ************* 

难道我犯错源文件的语法?我已将Platform SDK的路径包含在SOURCE文件的INCLUDES字段中。我错过了其他的东西吗?

在此先感谢。

回答

0

我已经解决了我的问题,通过重新排列头文件中包含的头文件的顺序和我的项目的源文件cpp 。

看一看下面的链接 C/C++ include file order/best practices

而且我做了UVC扩展单元的工作完美:-)

谢谢堆栈溢出家伙。