從 WinRT C 庫使用時,無法參考在 Win32 頭檔案(外部依賴項中的 .h 檔案)中完成的 typedef 結構定義
#include <mfplay.h>
#pragma comment(lib,"Mfplay.lib")
class MediaPlayerCallback //: public IMFPMediaPlayerCallback
{
long m_cRef; // Reference count
MFP_EVENT_HEADER H;
};
MFP_EVENT_HEADER 是在 MFPlay.h 中定義的 typedef 結構,轉到 VS2019 中的定義會將我帶到 MFPlay.h 定義中的定義,但代碼無法編譯
但是我嘗試在我創建的 .h 檔案中創建一個 typedef 結構,并且我能夠編譯它而沒有任何問題。
我的疑問是為什么我在 MFPlay.h 中定義時無法編譯,但在我定義的頭檔案中定義時卻能夠編譯。
我得到的錯誤
MediaPlayerCallback.h(11,22): error C3646: 'H': unknown override specifier
MediaPlayerCallback.h(11,23): error C4430: missing type specifier - int assumed. Note: C does not support default-int
最小可重復性
已經嘗試過 - 在 win32 桌面應用程式上嘗試了相同的代碼,我能夠毫無問題地進行編譯,但是當從 WinRT C 庫中執行相同的操作時會出現此問題
uj5u.com熱心網友回復:
如評論中所述,問題在于該MFP_EVENT_HEADER型別位于WINAPI_FAMILY_DESKTOP_APPAPI 磁區中,但不在WINAPI_FAMILY_APPUWP 應用程式支持的API 磁區中。根據Microsoft Docs,此型別標記為“[僅限桌面應用程式]”。
IMFPMediaPlayerCallback也是“僅限桌面應用程式”。這是因為此 API 根據Microsoft Docs被視為已棄用。建議改用媒體會話API,盡管IMFMediaSession它也是一個僅限桌面的界面。
對于 UWP,支持的媒體基礎 API 串列可在此處找到。還有Windows.MediaWindows 運行時 API 表面。我建議從音頻、視頻和攝像頭開始,看看你的場景支持什么。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/475942.html
上一篇:TCP發送緩沖區沒有做任何事情
