亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費(fèi)注冊(cè) 查看新帖 |

Chinaunix

  平臺(tái) 論壇 博客 文庫(kù)
最近訪問(wèn)板塊 發(fā)新帖
查看: 1168 | 回復(fù): 0
打印 上一主題 下一主題

VS 2005下DirectShow開(kāi)發(fā)環(huán)境的配置 [復(fù)制鏈接]

論壇徽章:
0
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報(bào)告]
發(fā)表于 2008-05-29 16:39 |只看該作者 |倒序?yàn)g覽

我也是個(gè)初學(xué)者,要是以下的文章有什么錯(cuò)誤,請(qǐng)給我留言,謝謝!

[1] 請(qǐng)確保您的機(jī)子上已經(jīng)安裝了VS 2005和DirectX 9.0b SDK。DX9.0 SDK的下載地址就不寫(xiě)了,自己在網(wǎng)上找吧。ㄎ业腄X9.0安裝在D盤(pán)根目錄下)
[2] 首先編譯SamplesC++DirectShowBaseClasses目錄下的baseclasses.sln以得到兩個(gè)庫(kù)文件(strbase.lib和strmbase.lib)。以下介紹的主要是如何修改編譯中的錯(cuò)誤,這也是眾多文章中沒(méi)有敘述的部分。自己寫(xiě)的,有些啰嗦,請(qǐng)?jiān)徟叮?br />

    進(jìn)入DirectShow的安裝目錄,找到SamplesC++DirectShowBaseClasses,雙擊baseclasses.sln打開(kāi)該解決方案。首先看到的會(huì)是Visual Studio的轉(zhuǎn)換向?qū),不用管它,直接Next到Finish。
    點(diǎn)擊F5,調(diào)試運(yùn)行,你會(huì)見(jiàn)到下面的錯(cuò)誤(至少我編譯的時(shí)候就是這樣的結(jié)果):
    1>------ Build started: Project: BaseClasses, Configuration: Debug Unicode Win32 ------
    1>Compiling...
    1>dllentry.cpp
    1>D:Program FilesMicrosoft Visual Studio 8VCPlatformSDKincludewinnt.h(222) : error C2146: syntax error : missing ';' before identifier 'PVOID64'
    1>D:Program FilesMicrosoft Visual Studio 8VCPlatformSDKincludewinnt.h(222) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
    1>D:Program FilesMicrosoft Visual Studio 8VCPlatformSDKincludewinnt.h(5940) : error C2146: syntax error : missing ';' before identifier 'Buffer'
    1>D:Program FilesMicrosoft Visual Studio 8VCPlatformSDKincludewinnt.h(5940) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
    1>D:Program FilesMicrosoft Visual Studio 8VCPlatformSDKincludewinnt.h(5940) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
    1>d:DXSDKSamplesC++DirectShowBaseClassesctlutil.h(278) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
    1>d:DXSDKincludeuuids.h : warning C4819: The file contains a character that cannot be represented in the current code page (936). Save the file in Unicode format to prevent data loss
    1>Build log was saved at "
file://d:DXSDKSamplesC++DirectShowBaseClassesDebug_UnicodeBuildLog.htm
"
    1>BaseClasses - 6 error(s), 1 warning(s)
    ========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========
    沒(méi)辦法,改錯(cuò)。(網(wǎng)上老外的文章中說(shuō)過(guò),不過(guò)也不明白什么意思!


    雙擊1>D:Program FilesMicrosoft Visual Studio 8VCPlatformSDKincludewinnt.h(222) : error C2146: syntax error : missing ';' before identifier 'PVOID64'   跳轉(zhuǎn)到出錯(cuò)的位置。
    你會(huì)見(jiàn)到錯(cuò)誤語(yǔ)句:typedef void * POINTER_64 PVOID64;
    這樣的定義,VS2005中是不支持的。將其修改為兩條語(yǔ)句:
    #define POINTER_64 __ptr64
    typedef void *PVOID;
    typedef void *POINTER_64 PVOID64;

    然后調(diào)試運(yùn)行,會(huì)發(fā)現(xiàn)還有1條錯(cuò)誤:
      1>------ Build started: Project: BaseClasses, Configuration: Debug Unicode Win32 ------
      1>Compiling...
      1>dllentry.cpp
      1>d:DXSDKSamplesC++DirectShowBaseClassesctlutil.h(278) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
      1>d:DXSDKincludeuuids.h : warning C4819: The file contains a character that cannot be represented in the current code page (936). Save the file in Unicode format to prevent data loss
      1>Build log was saved at "
file://d:DXSDKSamplesC++DirectShowBaseClassesDebug_UnicodeBuildLog.htm
"
      1>BaseClasses - 1 error(s), 1 warning(s)
      ========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========
    只有繼續(xù)改啦!雙擊1>d:DXSDKSamplesC++DirectShowBaseClassesctlutil.h(278) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int 跳轉(zhuǎn)到出錯(cuò)的位置。
    你會(huì)見(jiàn)到錯(cuò)誤語(yǔ)句:operator=(LONG);
    只是沒(méi)有返回值嘛!給它加一個(gè)就行了,將其改為:LONG operate=(LONG);
    再次調(diào)試運(yùn)行,哇塞!更多錯(cuò)誤:
      1>------ Build started: Project: BaseClasses, Configuration: Debug Unicode Win32 ------
      1>Compiling...
      1>wxdebug.cpp
      1>.wxdebug.cpp(534) : warning C4996: '_vsnwprintf' was declared deprecated
      1>        D:Program FilesMicrosoft Visual Studio 8VCincludestdio.h(450) : see declaration of '_vsnwprintf'
      1>        Message: 'This function or variable may be unsafe. Consider using _vsnwprintf_s instead. To disable deprecation, use _CRT_SECURE_NO_DEPRECATE. See _disibledevent="file:///d:DXSDKSamplesC++DirectShowBaseClassesDebug_UnicodeBuildLog.htm">file://d:DXSDKSamplesC++DirectShowBaseClassesDebug_UnicodeBuildLog.htm"
      1>BaseClasses - 10 error(s), 2 warning(s)
      ========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========
    有錯(cuò)就改啦!雙擊1>.wxdebug.cpp(567) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int 跳到出錯(cuò)位置。
    你會(huì)見(jiàn)到出錯(cuò)語(yǔ)句:static g_dwLastRefresh = 0;
    靜態(tài)類(lèi)型變量有這么定義的嗎?總得給個(gè)類(lèi)型吧!將其改為:static DWORD g_dwLastRefresh = 0;為什么類(lèi)型指定為DWORD?看程序中的語(yǔ)句就明白了——保證相同類(lèi)型的變量進(jìn)行運(yùn)算


    再次調(diào)試運(yùn)行:
      1>------ Build started: Project: BaseClasses, Configuration: Debug Unicode Win32 ------
      1>Compiling...
      1>winutil.cpp
      1>.winutil.cpp(2104) : error C2065: 'Count' : undeclared identifier
      1>.winutil.cpp(2106) : error C2228: left of '.peRed' must have class/struct/union
      1>.winutil.cpp(2106) : error C2228: left of '.peRed' must have class/struct/union
      1>.winutil.cpp(2107) : error C2228: left of '.peGreen' must have class/struct/union
      1>.winutil.cpp(2107) : error C2228: left of '.peGreen' must have class/struct/union
      1>.winutil.cpp(2108) : error C2228: left of '.peBlue' must have class/struct/union
      1>.winutil.cpp(2108) : error C2228: left of '.peBlue' must have class/struct/union
      1>.winutil.cpp(2124) : error C2228: left of '.peFlags' must have class/struct/union
      1>outputq.cpp
      1>.outputq.cpp(664) : error C2065: 'iDone' : undeclared identifier
      1>Generating Code...
      1>Build log was saved at "
file://d:DXSDKSamplesC++DirectShowBaseClassesDebug_UnicodeBuildLog.htm
"
      1>BaseClasses - 9 error(s), 0 warning(s)
      ========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========
     錯(cuò)誤少了一個(gè)哦!繼續(xù)努力!雙擊1>.winutil.cpp(2104) : error C2065: 'Count' : undeclared identifier跳到出錯(cuò)位置。
     你會(huì)見(jiàn)到出錯(cuò)語(yǔ)句:for (Count = 0;Count ------ Build started: Project: BaseClasses, Configuration: Debug Unicode Win32 ------
        1>Compiling...
        1>winutil.cpp
        1>outputq.cpp
        1>.outputq.cpp(664) : error C2065: 'iDone' : undeclared identifier
        1>Generating Code...
        1>Build log was saved at "
file://d:DXSDKSamplesC++DirectShowBaseClassesDebug_UnicodeBuildLog.htm
"
        1>BaseClasses - 1 error(s), 0 warning(s)
        ========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========
       不錯(cuò)哦!錯(cuò)誤剩下一個(gè)了!再改,雙擊1>.outputq.cpp(664) : error C2065: 'iDone' : undeclared identifier
跳到出錯(cuò)位置。
       你會(huì)見(jiàn)到出錯(cuò)語(yǔ)句:*nSamplesProcessed = iDone - iLost;
       iDone沒(méi)有定義?OK,繼續(xù)看它上面的語(yǔ)句:
       //  Loop processing the samples in batches
       LONG iLost = 0;
       for (long iDone = 0;
             iDone ------ Build started: Project: BaseClasses, Configuration: Debug Unicode Win32 ------
      1>Compiling...
      1>outputq.cpp
      1>Creating library...
      1>Build log was saved at "
file://d:DXSDKSamplesC++DirectShowBaseClassesDebug_UnicodeBuildLog.htm
"
      1>BaseClasses - 0 error(s), 0 warning(s)
      ========== Build: 1 succeeded, 0 failed, 0 up-to-date, 0 skipped ==========
       總算見(jiàn)到succeeded了,呵呵!你調(diào)出來(lái)了嗎?

       接著,生成所需要的那幾個(gè)庫(kù)文件,步驟如下:
       單擊VS2005菜單欄中的Build-->Batch Build-->單擊彈出的Batch Build對(duì)話(huà)框中的Select All按鈕-->單擊Build按鈕。生成我們編程所需要的那兩個(gè)庫(kù)文件:strbase.lib和strmbase.lib。
[3] 將DirectX SDK的Include和Lib目錄配置到VS2005的系統(tǒng)目錄中去,并且放在標(biāo)準(zhǔn)的VS2005目錄之前。步驟如下:
    單擊VS2005菜單欄上的Option(選項(xiàng))-->單擊彈出的Option對(duì)話(huà)框中Projects and Solutions前的加號(hào)將其展開(kāi)-->單擊VC++ Directories-->
    (1) 在show directories for下拉列表中選中Include files,然后添加下列路徑:
               D:DXSDKInclude
               D:DXSDKSAMPLESC++DIRECTSHOWBASECLASSES
               D:DXSDKSAMPLESC++COMMONINCLUDE
     (2) 在show directories for下拉列表中選中library files,然后添加下列路徑:           
          D:DXSDKLib
          D:DXSDKSamplesC++DirectShowBaseClassesDebug
          D:DXSDKSamplesC++DirectShowBaseClassesDebug_Unicode
          D:DXSDKSamplesC++DirectShowBaseClassesRelease
          D:DXSDKSamplesC++DirectShowBaseClassesRelease_Unicode
       路徑添加完成以后,別忘了點(diǎn)確定哦!

[4] 這一步只是簡(jiǎn)單的介紹一下編程時(shí)需要附加什么樣的庫(kù)文件及如何添加。
    DirectShow應(yīng)用程序應(yīng)該至少連接庫(kù)文件strmiids.lib和quartz.lib。前者定義了DirectShow標(biāo)準(zhǔn)的CLSID和IID,后者定義了導(dǎo)出函數(shù)AMGetErrorText(如果應(yīng)用程序中沒(méi)有使用到這個(gè)函數(shù),也可以不連接這個(gè)庫(kù))。
    如果程序里包含了頭文件streams.h,則一般庫(kù)文件還要連接strmbasd.lib、uuid.lib、winmm.lib。
    如果你不知道怎樣附加庫(kù)文件的話(huà),可以試下下述的步驟:
    (1) 首先你得新建或打開(kāi)一個(gè)解決方案。
    (2) 單擊VS2005菜單欄中的Project-->XXX Properties-->彈出屬性設(shè)置對(duì)話(huà)框,展開(kāi)Configuration Properties-->展開(kāi)Linker-->單擊Input-->在右邊的Addtional Dependencies中添加庫(kù)。在每個(gè)庫(kù)文件中以空格間隔。
             例如:strbase.lib strmiids.lib
[5] 全部搞定了之后,你就可以放心的寫(xiě)程序,調(diào)試程序了。加油哦!


本文來(lái)自ChinaUnix博客,如果查看原文請(qǐng)點(diǎn):http://blog.chinaunix.net/u1/33950/showart_716130.html
您需要登錄后才可以回帖 登錄 | 注冊(cè)

本版積分規(guī)則 發(fā)表回復(fù)

  

北京盛拓優(yōu)訊信息技術(shù)有限公司. 版權(quán)所有 京ICP備16024965號(hào)-6 北京市公安局海淀分局網(wǎng)監(jiān)中心備案編號(hào):11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報(bào)專(zhuān)區(qū)
中國(guó)互聯(lián)網(wǎng)協(xié)會(huì)會(huì)員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關(guān)心和支持過(guò)ChinaUnix的朋友們 轉(zhuǎn)載本站內(nèi)容請(qǐng)注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP