我在通过Media Foundation从摄像机中阅读样品遇到了一些麻烦。我在Windows SDK示例文件夹mfcapturetofile中遵循示例。
我的课程正确设置为从抽象的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,是否有一些事情?为什么它会单独进行编译,但不能在较大的项目中进行编译?
我想正在进行一个循环依赖性,但我不确定如何跟踪。当然,这似乎不是我自己的制作,更有可能隐藏在某处的标题。
解决方案似乎是使用
#define WIN32_LEAN_AND_MEAN
在标题文件中,将所有内容的所有内容都包含在任何其他文件中的任何#include指令的顶部。现在,该代码单独编译,并且在一个较大的项目中。