//我成功运行过的代码: #include "stdafx.h" #include <dshow.h> #include <streams.h> #pragma comment (lib,"Ole32.lib") #pragma comment (lib,"Strmiids.lib") void TestMP3(void); int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPTSTR lpCmdLine, int nCmdShow) { // TODO: Place code here. TestMP3(); return 0; } void TestMP3() { IGraphBuilder *pGraph; /* 指向Filter Graph的指针 */ IMediaControl *pMediaControl; /* 指向MediaControl对象的指针 */ /* 初始化,程序启动时执行一次即可 */ CoInitialize(NULL); /**************************************************************************/ /* 以下程序每次播放MP3(或其他格式)文件时调用 */ /* 创建一个Filter Graph manager */ CoCreateInstance(CLSID_FilterGraph, NULL, CLSCTX_INPROC, IID_IGraphBuilder, (void **)&pGraph); pGraph->QueryInterface(IID_IMediaControl, (void **)&pMediaControl); /* 连接播放指定文件所需的filter */ pGraph->RenderFile(L"//test.mp3", NULL); /* 开始播放指定的文件 */ pMediaControl->Run(); /* 文件的播放在DirectShow中独立线程中进行,此处等待 */ MessageBox(NULL, L"点击[OK]结束播放", L"Play MP3", MB_OK); pMediaControl->Stop(); /* 停止播放 */ pMediaControl->Release(); /* 释放对象 */ pGraph->Release(); /**************************************************************************/ /* 程序结束时调用 */ CoUninitialize(); } 原文作者: norains原文地址: http://blog.csdn.net/norains/archive/2006/02/25/609227.aspx