当我从2010年6月的SDK中实现XAudio2Sound3D示例时。我几乎在自己的框架中复制了所有这些,而这个变量(sound3DInstance)显示为未解析的外部:X3DAudioCalculate(sound3DInstance、&listener、&emitter、calcFlags和&dspSettings)和X3DAudioInitialize(details.OutputFormat.dwChannelMask、SPEEDOFSOUND、sound3DInstance)变量类型为:
X3DAUDIO_HANDLE sound3DInstance;
X3DAUDIO_LISTENER listener;
X3DAUDIO_EMITTER emitter;
X3DAUDIO_DSP_SETTINGS dspSettings;
DWORD calcFlags = X3DAUDIO_CALCULATE_MATRIX | X3DAUDIO_CALCULATE_DOPPLER | X3DAUDIO_CALCULATE_LPF_DIRECT | X3DAUDIO_CALCULATE_LPF_REVERB | X3DAUDIO_CALCULATE_REVERB;
const float SPEEDOFSOUND = X3DAUDIO_SPEED_OF_SOUND;
XAUDIO2_DEVICE_DETAILS details;
现在,两个函数中唯一显示错误的通用变量是sound3DInstance,所以这一定是问题所在。在SDK示例中,所有变量都放在一个名为*AUDIO_STATE*的结构中,在程序初始化时,它们调用:*ZeroMemory(&g_audioState,sizeof(AUDIO_STATE))*在我的代码中,变量是我的Sound类的成员,我只是一个接一个地对它们进行ZeroMemory,所以效果不应该是一样的吗?
您没有将程序链接到XAudio库(Xaudio2.lib)。请检查项目的链接器设置。