我用monkeyAudio解码APE文件,源码中重写了WAVEFORMATEX结构体,我只要引用就会出错,但我又必须要用这个,怎么解决?谢谢了
APE::WAVEFORMATEX wfeInput;
WAVEFORMATEX efex;
error C2872: “WAVEFORMATEX”: 不明确的符号
这个错误是由于编译器无法识别WAVEFORMATEX结构体的定义。可能是因为您在使用APE::WAVEFORMATEX时与系统的WAVEFORMATEX发生了冲突。
一种解决方法是使用完整的结构体定义,而不是只使用WAVEFORMATEX。您可以将APE::WAVEFORMATEX结构体中的字段复制到您的代码中,并用完整的结构体定义来代替WAVEFORMATEX,例如:
APE::WAVEFORMATEX wfeInput;
WAVEFORMATEX efex;
efex.wFormatTag = wfeInput.FormatTag;
efex.nChannels = wfeInput.Channels;
efex.nSamplesPerSec = wfeInput.SampleRate;
efex.nAvgBytesPerSec = wfeInput.BytesPerSecond;
efex.nBlockAlign = wfeInput.BlockAlign;
efex.wBitsPerSample = wfeInput.BitsPerSample;
efex.cbSize = wfeInput.ExtraDataSize;
这样就可以避免与系统的WAVEFORMATEX结构体发生冲突,并使您能够使用APE::WAVEFORMATEX结构体的字段。
根据你提供的信息,出现错误的原因可能是因为编译器无法识别WAVEFORMATEX结构体的定义。这可能是因为在引用WAVEFORMATEX之前,需要先包含相应的头文件。
尝试在源文件中添加以下头文件:
#include <mmsystem.h>
mmsystem.h是Windows API中的一个头文件,其中定义了许多多媒体相关的函数和结构体,包括WAVEFORMATEX结构体。
如果仍然无法解决问题,请检查是否有其他头文件中定义了名为WAVEFORMATEX的结构体,这可能会导致名称冲突。
另外,根据你提供的代码片段,似乎APE::WAVEFORMATEX和WAVEFORMATEX是两个不同的结构体。如果这是真的,你可能需要使用APE::WAVEFORMATEX代替WAVEFORMATEX,或者在定义APE::WAVEFORMATEX时包含WAVEFORMATEX的定义。
希望这些提示能够帮助你解决问题。