2016-01-11 33 views
3

我有一個Mpeg2 TS應該進行分析。我正在使用名爲Dvbsiparser.h的Windows Kit版本8(或8.1)中引入的頭文件。

我知道(但不是很確定)我應該建立一個過濾器圖形,然後添加兩個重要的過濾器:
1. Mpeg2部分和表2. Mpeg2運輸信息 然後,我使用IDvbSiParser obj來分析流。 當我想要實例IDvbSiParser:如何在vC++中使用DvbSiparser.h解析器mpeg2 TS?

CoCreateInstance(__uuidof(IDvbSiParser), ..., ..., IID_IDvbSiParser, ...)

我得到的鏈接錯誤:無法解析的外部IID_IDvbSiParser。

我使用Visual stdio 2013,.Net 4.5和msvC++。 我還包括stream.h和鏈接winmm.lib,strmbased.lib,msvcrtd.lib和strmiids.lib,並將真正的lib路徑設置爲Windows套件。 除IDvbSiParser外,其他所有對象都被創建。

我應該使用其他庫還是包含其他頭文件? 我如何找到適合IID_IDvbSiParser的庫? 謝謝。

+1

用'__uuidof(IDvbSiParser)'替換'IID_IDvbSiParser' –

+0

我試過這個解決方案,但是我沒有得到結果OK(即S_OK)。是否還有其他問題,或者我必須使用IID_IDvbSiParser? – Erfankam

+0

第一個參數不可能是正確的。我不確定你從哪裏得到這段代碼,以及爲什麼這個值恰好在那裏。你需要一個有效的類標識符,典型的符號是CLSID_Something。可能是'CLSID_DvbSiParser'。 –

回答

2

畢竟我再讀MSDN about DvbSiParser2,面對這個重要的注意事項:

The IDvbSiParser2 interface inherits from IDvbSiParser. IDvbSiParser2 also has these types of members:

所以,我們可以用IDvbSiParser2代替IDvbSiParser,因爲我們知道有適當的和真正的CLSID爲IDvbSiParser在IDvbSiParser2 MSDN Doc提到。 下一步包括定義這樣的新的GUID變量:

GUID CLSID_IDvbSiParser2 = {0xF6B96EDA, 0x1A94, 0x4476, 0xA8, 0x5F, 0X4D, 0x3D, 0xC7, 0xB3, 0x9C, 0x3F}; 
IDvbSiParser2 *ppdvbsp; 
HRESULT hr = CoCreateInstance(CLSID_IDvbSiParser2, NULL, CLSCTX_INPROC_SERVER, __uuidof(IDvbSiParser2), void **(pDvbsiparser)); 
if (SUCCEEDED(hr)) { lab lab lab}; 

我想你會得到S_OK像我一樣。

相關問題