Media Foundationを使用してビデオカメラからサンプルを読み込む際に問題があります。私は、Windows SDKのサンプルフォルダMFCaptureToFileの例に従っています。IMFSourceReaderCallback:基底クラスが未定義
私のクラスは私の知る限り、抽象IMFSourceReaderCallbackクラスから継承するように正しく設定されている:私は自分自身でこのコードをコンパイルする場合
#include <windows.h>
#include <mfapi.h>
#include <mfidl.h>
#include <mfreadwrite.h>
class WinCapture : public IMFSourceReaderCallback{
public:
static HRESULT CreateInstance(
std::string deviceName,
WinCapture **winCapture
);
// IUnknown methods
STDMETHODIMP QueryInterface(REFIID iid, void** ppv);
STDMETHODIMP_(ULONG) AddRef();
STDMETHODIMP_(ULONG) Release();
// IMFSourceReaderCallback methods
STDMETHODIMP OnReadSample(
HRESULT hrStatus,
DWORD dwStreamIndex,
DWORD dwStreamFlags,
LONGLONG llTimestamp,
IMFSample *pSample
);
STDMETHODIMP OnEvent(DWORD, IMFMediaEvent *)
{
return S_OK;
}
STDMETHODIMP OnFlush(DWORD)
{
return S_OK;
}
}
、それが正常にコンパイルされます。しかし、私が大きなプロジェクトでこのクラスを使用したいのであれば、それは私にエラーをもたらします。このエラーを投げている他のファイルにwinCapture.hをどのように含めるかについては何かありますか?なぜそれはそれ自身でコンパイルされますが、より大きなプロジェクトのコンテキストではコンパイルされませんか?
私は循環依存が起こっていると思いますが、これをどのように追跡するのかは分かりません。確かに私自身のものではないようですが、ヘッダーがどこかに隠されている可能性が高いです。
"基本クラス未定義"は、コンパイラが 'IMFSourceReaderCallback'定義を認識しないことを意味します。あなたはmfreadwrite.hを#includedしていますか? –
はい、#includesをopに入れます。 – dmedine
Visual Studio 2013では、上のコードスニペットはコンパイラを正常に通過します(リンカエラーがさらに表示されます)。 –