在 C 中使用 XAudio2
Using XAudio2 in C
我正在 Windows 10 上使用 Visual Studio 2015 编写 C 程序。当我包含 XAudio2.h 时,我遇到了数百个编译器错误,我相信这些错误都源于这个:
Error C2485 'uuid': unrecognized extended attribute
有没有办法让 XAudio2 与 C 应用程序一起工作?
简而言之,最新版本的 XAudio2(Windows 8.x SDK 中的 XAudio 2.8,Windows 10 SDK 中的 XAudio 2.9)不支持 C,仅支持 C++。
来自 deprecated DirectX SDK 的较旧的 XAudio 2.7 使用 C 构建,尽管它基本上没有来自 C 的测试。事实上,来自 C 而不是 C++ 的 DirectX 使用尚未真正经过测试或在非常非常长的时间。用于生成 COM 接口头的 MIDL 编译器仍然有很多与 C 相关的支持宏和 C 使用是 first-class citizen 时的元素,但这东西肯定是 "as is" 状态几乎没有测试覆盖率。
你可以继续让自己沮丧,你可以将所有 C++ 代码包装在你自己的 C 可调用包装器中,或者直接开始使用 C++。
有关使用 VS 2015 和旧版 DirectX SDK 的重要信息,请参阅 this post and this post。
我正在 Windows 10 上使用 Visual Studio 2015 编写 C 程序。当我包含 XAudio2.h 时,我遇到了数百个编译器错误,我相信这些错误都源于这个:
Error C2485 'uuid': unrecognized extended attribute
有没有办法让 XAudio2 与 C 应用程序一起工作?
简而言之,最新版本的 XAudio2(Windows 8.x SDK 中的 XAudio 2.8,Windows 10 SDK 中的 XAudio 2.9)不支持 C,仅支持 C++。
来自 deprecated DirectX SDK 的较旧的 XAudio 2.7 使用 C 构建,尽管它基本上没有来自 C 的测试。事实上,来自 C 而不是 C++ 的 DirectX 使用尚未真正经过测试或在非常非常长的时间。用于生成 COM 接口头的 MIDL 编译器仍然有很多与 C 相关的支持宏和 C 使用是 first-class citizen 时的元素,但这东西肯定是 "as is" 状态几乎没有测试覆盖率。
你可以继续让自己沮丧,你可以将所有 C++ 代码包装在你自己的 C 可调用包装器中,或者直接开始使用 C++。
有关使用 VS 2015 和旧版 DirectX SDK 的重要信息,请参阅 this post and this post。