读书人

下面是msdn上有关DirectShow的一段代码

发布时间: 2012-03-03 15:33:03 作者: rapoo

下面是msdn上有关DirectShow的一段代码,调不通
下面是msdn上有关DirectShow的一段代码,调不通?
不知道还要加些什么头文件?
int _tmain(int argc, _TCHAR* argv[])
{
IGraphBuilder *pGraph = NULL;
IMediaControl *pControl = NULL;
IMediaEvent *pEvent = NULL;

// Initialize the COM library.
HRESULT hr = CoInitialize(NULL);
if (FAILED(hr))
{
printf( "ERROR - Could not initialize COM library ");
return 0;
}

// Create the filter graph manager and query for interfaces.
hr = CoCreateInstance(CLSID_FilterGraph, NULL, CLSCTX_INPROC_SERVER,
IID_IGraphBuilder, (void **)&pGraph);
if (FAILED(hr))
{
printf( "ERROR - Could not create the Filter Graph Manager. ");
return 0;
}

hr = pGraph-> QueryInterface(IID_IMediaControl, (void **)&pControl);
hr = pGraph-> QueryInterface(IID_IMediaEvent, (void **)&pEvent);

// Build the graph. IMPORTANT: Change this string to a file on your system.
hr = pGraph-> RenderFile(L "C:\\Example.avi ", NULL);
if (SUCCEEDED(hr))
{
// Run the graph.
hr = pControl-> Run();
if (SUCCEEDED(hr))
{
// Wait for completion.
long evCode;
pEvent-> WaitForCompletion(INFINITE, &evCode);

// Note: Do not use INFINITE in a real application, because it
// can block indefinitely.
}
}
pControl-> Release();


pEvent-> Release();
pGraph-> Release();
CoUninitialize();
return 0;
}

[解决办法]
装了sdk没有?
[解决办法]
#include <dshow.h >
#pragma comment(lib, "Strmiids.lib ")
[解决办法]
1.装DX SDK没?
没装那就去下吧.
2.让编译器包含软件开发包的目录没?
首先点击Tool菜单,选择Options,然后点击Directories,在Show Directories for 组合框下拉菜单中选择Include files,增加一个新的目录。将你的DirectX的路径填入。(例如:C:\DXSDK\include)然后将它移到列表的第一位,使编译时第一个寻找它(防止寻找老版本)。然后选择Show Directories for组合框下拉菜单中的Library files,方法同前,只是把include改成lib。
3.添加库文件名到你的工程没?
Project -> Settings -> Link ,在Object/library modules中加入你要用到的.lib文件

如果还不行的话那我就没折了...

读书人网 >VC/MFC

热点推荐