我才加了一段directshow程序,就编译通不过。
void CTestDlg::OnButton1() 
{
ICreateDevEnum *pDevEnum = NULL;
IEnumMoniker *pEnum = NULL; // Create the System Device Enumerator.
HRESULT hr = CoCreateInstance(CLSID_SystemDeviceEnum, NULL,
  CLSCTX_INPROC_SERVER, IID_ICreateDevEnum, 
  reinterpret_cast<void**>(&pDevEnum));
if (SUCCEEDED(hr))
{
    // Create an enumerator for the video capture category.
hr = pDevEnum->CreateClassEnumerator(
CLSID_VideoInputDeviceCategory,
&pEnum, 0);
}
}我查了一下,相关得函数在#include "strmif.h"中,我于是包含了这个头文件,然后编译说:
'CLSID_SystemDeviceEnum' : undeclared identifier
'CLSID_VideoInputDeviceCategory' : undeclared identifier
我就又加入了uuids.h的头文件,可是又连接出错:
 unresolved external symbol _CLSID_VideoInputDeviceCategory
 unresolved external symbol _CLSID_SystemDeviceEnum
 unresolved external symbol _IID_ICreateDevEnum
请问我该包含什么文件?我在哪里可以得到某个函数在哪个文件中,象msdn中那样?

解决方案 »

  1.   

    不行,
    ectshow\baseclasses\wxutil.h(530) : error C2061: syntax error : identifier 'DWORD_PTR'
    c:\dxsdk\samples\c++\directshow\baseclasses\ctlutil.h(437) : error C2504: 'IBasicVideo2' : base class undefined
    c:\dxsdk\samples\c++\directshow\baseclasses\ctlutil.h(904) : error C2146: syntax error : missing ';' before identifier 'm_dwAdvise'
    c:\dxsdk\samples\c++\directshow\baseclasses\ctlutil.h(904) : error C2501: 'DWORD_PTR' : missing storage-class or type specifiers
    c:\dxsdk\samples\c++\directshow\baseclasses\ctlutil.h(904) : error C2501: 'm_pGraphConfig' : missing storage-class or type specifiers
    c:\dxsdk\samples\c++\directshow\baseclasses\amfilter.h(1340) : error C2504: 'IMemAllocatorCallbackTemp' : base class undefined
    c:\dxsdk\samples\c++\directshow\baseclasses\amfilter.h(1444) : error C2143: syntax error : missing ';' before '*'
    c:\dxsdk\samples\c++\directshow\baseclasses\amfilter.h(1444) : error C2501: 'IMemAllocatorNotifyCallbackTemp' : missing storage-class or type specifiers
    c:\dxsdk\samples\c++\directshow\baseclasses\amfilter.h(1444) : error C2501: 'm_pNotify' : missing storage-class or type specifiers
    c:\dxsdk\samples\c++\directshow\baseclasses\amfilter.h(1506) : error C2061: syntax error : identifier 'IMemAllocatorNotifyCallbackTemp'
    c:\dxsdk\samples\c++\directshow\baseclasses\renbase.h(68) : error C2061: syntax error : identifier 'DWORD_PTR'
    c:\dxsdk\samples\c++\directshow\baseclasses\renbase.h(78) : error C2146: syntax error : missing ';' before identifier 'm_dwAdvise'
    c:\dxsdk\samples\c++\directshow\baseclasses\renbase.h(78) : error C2501: 'DWORD_PTR' : missing storage-class or type specifiers
    c:\dxsdk\samples\c++\directshow\baseclasses\renbase.h(78) : error C2501: 'm_dwAdvise' : missing storage-class or type specifiers
    c:\dxsdk\samples\c++\directshow\baseclasses\winctrl.h(103) : error C2061: syntax error : identifier 'LONG_PTR'
    c:\dxsdk\samples\c++\directshow\baseclasses\dsschedule.h(24) : error C2146: syntax error : missing ';' before identifier 'AddAdvisePacket'
    c:\dxsdk\samples\c++\directshow\baseclasses\dsschedule.h(24) : error C2501: 'DWORD_PTR' : missing storage-class or type specifiers
    c:\dxsdk\samples\c++\directshow\baseclasses\dsschedule.h(26) : error C2061: syntax error : identifier 'DWORD_PTR'
    c:\dxsdk\samples\c++\directshow\baseclasses\dsschedule.h(47) : error C2146: syntax error : missing ';' before identifier 'm_dwAdviseCookie'
    c:\dxsdk\samples\c++\directshow\baseclasses\dsschedule.h(47) : error C2501: 'DWORD_PTR' : missing storage-class or type specifiers
    c:\dxsdk\samples\c++\directshow\baseclasses\dsschedule.h(47) : error C2501: 'm_dwAdviseCookie' : missing storage-class or type specifiers
    c:\dxsdk\samples\c++\directshow\baseclasses\dsschedule.h(85) : error C2146: syntax error : missing ';' before identifier 'Cookie'
    c:\dxsdk\samples\c++\directshow\baseclasses\dsschedule.h(85) : error C2501: 'DWORD_PTR' : missing storage-class or type specifiers
    c:\dxsdk\samples\c++\directshow\baseclasses\dsschedule.h(86) : warning C4183: 'Cookie': member function definition looks like a ctor, but name does not match enclosing class
    c:\dxsdk\samples\c++\directshow\baseclasses\dsschedule.h(96) : error C2146: syntax error : missing ';' before identifier 'm_dwNextCookie'
    c:\dxsdk\samples\c++\directshow\baseclasses\dsschedule.h(96) : error C2501: 'm_dwNextCookie' : missing storage-class or type specifiers
    c:\dxsdk\samples\c++\directshow\baseclasses\dsschedule.h(102) : error C2146: syntax error : missing ';' before identifier 'AddAdvisePacket'
    c:\dxsdk\samples\c++\directshow\baseclasses\dsschedule.h(102) : error C2501: 'DWORD_PTR' : missing storage-class or type specifiers
    c:\dxsdk\samples\c++\directshow\baseclasses\refclock.h(103) : error C2061: syntax error : identifier 'DWORD_PTR'
    c:\dxsdk\samples\c++\directshow\baseclasses\refclock.h(111) : error C2061: syntax error : identifier 'DWORD_PTR'
    c:\dxsdk\samples\c++\directshow\baseclasses\refclock.h(121) : error C2061: syntax error : identifier 'DWORD_PTR'
    c:\dxsdk\samples\c++\directshow\basecl
      

  2.   

    其实你只要拷贝个sdk 中的例子,改改就可以了,如果你真的要一步步做的话,你先打开例子,然后把例子里的 External Depend 文件夹里的大致补上就可以了.
    还有一个,就是一定要在 "c"\pro..\m..\vc98\include" 之前 inclue 那些库文件.