2012-10-14 2 views
1

Visual Studio 2008을 사용하여 Windows Mobile 6.1이 설치된 장치 용 SmartDevice Win32 DLL을 개발 중입니다. DirectShow를 사용해야하고 기본 예제를 재현하기 시작했습니다.IID_MediaControl 선언되지 않은 식별자

.h :

#pragma once 

// Additional Include Directories: 
// "C:\Program Files (x86)\Windows Mobile 6 SDK\Smartphone\Include\Armv4i" 
#include <dshow.h> 

// Included strmiids.lib for CLSID_FilterGraph and IID_IGraphBuilder (.cpp) 
#pragma comment(lib, "strmiids.lib") 



extern "C" { 

    __declspec(dllexport) bool InitCOM(); 

} 

그리고 .cpp :

이제
#include "stdafx.h" 
#include "DLLDevice.h" 


BOOL APIENTRY DllMain(HANDLE hModule, 
         DWORD ul_reason_for_call, 
         LPVOID lpReserved 
        ) 
{ 
    return TRUE; 
} 



__declspec(dllexport) bool InitCOM() 
{ 
    if(FAILED(CoInitialize(NULL))) 
     return false; 

    IGraphBuilder* pGraphBuilder = NULL; 
    HRESULT hr = CoCreateInstance(CLSID_FilterGraph, NULL, CLSCTX_INPROC_SERVER, 
     IID_IGraphBuilder, (void**) &pGraphBuilder); 

    if(FAILED(hr)) 
     return false; 

    IMediaControl *pMediaControl = NULL; 
    hr = pGraphBuilder->QueryInterface(IID_MediaControl, (void**) &pMediaControl); 


    pGraphBuilder->Release(); 

    return true; 
} 

내가 링커 오류가 있습니다

error C2065: 'IID_MediaControl' : undeclared identifier 

왜? 이 문제를 어떻게 해결할 수 있습니까?
왜 DirectShow로 프로젝트를 만들 수 없습니까?

답변

2

IID_IMediaControl이기 때문에 IID_MediaControl이 아닙니다.

+0

디지털 비디오 및 TV 용 프로그래밍 directsoft를 읽었으며 COM Basic에서 그는 IID_MediaControl을 썼습니다. 왜 그런지 모르겠습니다 ... – Nick

+1

인터페이스는 IMediaControl이고, IID_는 연결된 IID. 대부분의 인터페이스를 사용하면 대신'__uuidof (IMediaControl)'을 사용할 수 있습니다. –

관련 문제