VS2008下安装与设备DirectShow

    添加时间:2013-6-18 点击量:

    一、 安装DirectShow。


    我装的是DirectShow SDK 9.0b。安装法度名为dx90bsdk.exe。地址:ftp://ftp.qut.edu.au/pub/microsoft/directx/directx9b/dx90bsdk.exe。









    二、 筹办须要的静态链接库。


    须要的静态链接库有strmiids.lib、strmbasd.lib、strmbase.lib、quartz.lib、winmm.lib。


    此中strmiids.lib、quartz.lib在D:\ DXSDK\Lib文件夹下就有。strmbasd.lib要本身编译。


    进入D:\ DXSDK\Samples\C++\DirectShow\BaseClasses文件夹下,双击baseclasses.sln。




    按F7开端编译。



    批改一些编译错误:


    1、 error C2146: 语法错误 : 缺乏“;”(在标识符“PVOID64”的前面)。


    批改:在“typedef void POINTER_64 PVOID64;”前面加上“#define POINTER_64 __ptr64”。



    2、 error C4430: 缺乏类型申明符 - 假定为 int。重视: C++ 不支撑默认 int。


    批改:把“operator=(LONG);”改成“LONG operator=(LONG);”。



    批改:把“static g_dwLastRefresh = 0;”改成“static DWORD g_dwLastRefresh = 0;”。



    3、error C2065: “Count”: 未声明的标识符。


    批改:在“for (UINT Count = 0;Count < Result;Count++) ”语句前面加上“UINT Count = 0”,再把“for (UINT Count = 0;Count < Result;Count++) ”改为“for (Count = 0;Count < Result;Count++) ”。



    4、 error C2065: “iDone”: 未声明的标识符。


    批改:在“for (long iDone = 0;iDone < nSamples || (m_nBatched != 0 && m_bSendAnyway);)”语句前面加上“long iDone = 0;”,再把“for (long iDone = 0;iDone < nSamples || (m_nBatched != 0 && m_bSendAnyway);)”改为“for (iDone = 0;iDone < nSamples || (m_nBatched != 0 && m_bSendAnyway);)”。



    批改完错误再设置“生成”—>“批处理惩罚”。把Debug、Debug Unicode、Release、Relese Unicode这4个都勾起来。



    单击“从头生成”。



    如许strmbasd.lib就编译好了。




    三、 添加VS2008的头文件目次和静态库目次。


    1、 头文件目次。


    要添加的目次有:


    D:\DXSDK\Include


    D:\DXSDK\Samples\C++\DirectShow\BaseClasses


    D:\DXSDK\Samples\C++\Common\Include。



    2、 静态库目次。


    要添加的目次有:


    D:\DXSDK\Lib


    D:\DXSDK\Samples\C++\DirectShow\BaseClasses\Debug


    D:\DXSDK\Samples\C++\DirectShow\BaseClasses\Debug_Unicode


    D:\DXSDK\Samples\C++\DirectShow\BaseClasses\Release


    D:\DXSDK\Samples\C++\DirectShow\BaseClasses\Release_Unicode


    我们永远不要期待别人的拯救,只有自己才能升华自己。自己已准备好了多少容量,方能吸引对等的人与我们相遇,否则再美好的人出现、再动人的事情降临身边,我们也没有能量去理解与珍惜,终将擦肩而过。—— 姚谦《品味》
    分享到: