如何解决MediaFoundation使用时的链接错误



我有一个有效的解决方案,然后我需要添加一个实现了MediaFoundation的项目。因此,为了将其包括在内,我将该项目添加为现有项目,然后在"常规"部分的配置中,我提供了.h文件的路径,然后在Liker输入中添加了.lib

之后,我尝试使用它,并在我的一个文件中编写include,然后从添加的这个项目中调用了一些方法。

当我试图编译我的项目时,我得到了一个错误:

9>LINK : warning LNK4098: defaultlib 'MSVCRT' conflicts with use of other libs; use /NODEFAULTLIB:library
9>co_AudioDecoder.lib(co_AudioDecoderMF.obj) : error LNK2019: unresolved external symbol MFStartup referenced in function "private: bool __cdecl co_AudioDecoderMF::InitAndStartCOMLib(void)" (?InitAndStartCOMLib@co_AudioDecoderMF@@AEAA_NXZ)
9>co_AudioDecoder.lib(co_AudioDecoderMF.obj) : error LNK2019: unresolved external symbol MFShutdown referenced in function "public: virtual void __cdecl co_AudioDecoderMF::Cleanup(void)" (?Cleanup@co_AudioDecoderMF@@UEAAXXZ)
9>co_AudioDecoder.lib(co_AudioDecoderMF.obj) : error LNK2019: unresolved external symbol MFCreateAttributes referenced in function "private: bool __cdecl co_AudioDecoderMF::CreateSourceReader(void)" (?CreateSourceReader@co_AudioDecoderMF@@AEAA_NXZ)
9>co_AudioDecoder.lib(co_AudioDecoderMF.obj) : error LNK2019: unresolved external symbol MFCreateMediaType referenced in function "private: bool __cdecl co_AudioDecoderMF::ConfigureAudioStream(enum co_AudioDecoder::SoundDataType,struct IMFSourceReader *,struct IMFMediaType * *)" (?ConfigureAudioStream@co_AudioDecoderMF@@AEAA_NW4SoundDataType@co_AudioDecoder@@PEAUIMFSourceReader@@PEAPEAUIMFMediaType@@@Z)
9>co_AudioDecoder.lib(co_AudioDecoderMF.obj) : error LNK2019: unresolved external symbol MFCreateMFByteStreamOnStream referenced in function "private: bool __cdecl co_AudioDecoderMF::CreateByteStream(unsigned char const *,__int64)" (?CreateByteStream@co_AudioDecoderMF@@AEAA_NPEBE_J@Z)
9>co_AudioDecoder.lib(co_AudioDecoderMF.obj) : error LNK2019: unresolved external symbol MFCreateSourceReaderFromByteStream referenced in function "private: bool __cdecl co_AudioDecoderMF::CreateSourceReader(void)" (?CreateSourceReader@co_AudioDecoderMF@@AEAA_NXZ)
9>co_AudioDecoder.lib(co_AudioDecoderMF.obj) : error LNK2001: unresolved external symbol MFAudioFormat_PCM
9>co_AudioDecoder.lib(co_AudioDecoderMF.obj) : error LNK2001: unresolved external symbol MF_MT_MAJOR_TYPE
9>co_AudioDecoder.lib(co_AudioDecoderMF.obj) : error LNK2001: unresolved external symbol MF_MT_SUBTYPE
9>co_AudioDecoder.lib(co_AudioDecoderMF.obj) : error LNK2001: unresolved external symbol MF_MT_AUDIO_NUM_CHANNELS
9>co_AudioDecoder.lib(co_AudioDecoderMF.obj) : error LNK2001: unresolved external symbol MF_MT_AUDIO_SAMPLES_PER_SECOND
9>co_AudioDecoder.lib(co_AudioDecoderMF.obj) : error LNK2001: unresolved external symbol MF_MT_AUDIO_BLOCK_ALIGNMENT
9>co_AudioDecoder.lib(co_AudioDecoderMF.obj) : error LNK2001: unresolved external symbol MF_MT_AUDIO_BITS_PER_SAMPLE
9>co_AudioDecoder.lib(co_AudioDecoderMF.obj) : error LNK2001: unresolved external symbol MFMediaType_Audio

首先,这很奇怪,因为我已经在其他解决方案中使用了这个项目,没有问题,但经过研究,我发现我需要在配置Linker -> input中再添加几个.lib

Mf.lib
Mfplat.lib
mfuuid.lib

(灵感来自我的另一个解决方案中没有这些行,它在哪里工作(,在我添加这些行之后,很多错误都消失了,但有一个离开了

9>co_AudioDecoder.lib(co_AudioDecoderMF.obj) : error LNK2019: unresolved external symbol MFCreateSourceReaderFromByteStream referenced in function "private: bool __cdecl co_AudioDecoderMF::CreateSourceReader(void)" (?CreateSourceReader@co_AudioDecoderMF@@AEAA_NXZ)

我还没有找到任何关于如何解决它的方法。我是c++领域的一个相对较新的人,为了使MediaFoundation(big lib(工作,我需要花几个小时来找出要添加什么才能使其工作,这看起来很奇怪。

所以,问题是——我在这里错过了什么?

您需要包括以下内容:

#pragma注释(lib,"mfreadwrite"(

文档通常有帮助:

MFCreateSourceReaderFromByteStream函数

最新更新