在Windows 7上使用XAudio2构build

我正在尝试使用以下说明构build一些使用XAudio2并在Windows 7上运行的代码:

http://msdn.microsoft.com/en-us/library/windows/desktop/ee663275%28v=vs.85%29.aspx

正如所build议的,我将包含来自DirectX SDK的XAudio2.h:

#include <%DXSDK_DIR%Include\xaudio2.h> 

结果:

 fatal error C1083: Cannot open include file: '%DXSDK_DIR%Include\xaudio2.h': No such file or directory 

好吧。 我很确定VC ++并没有像这样扩展环境variables。 所以我用直接包含它的#includereplace了#include

 #include <C:/Program Files (x86)/Microsoft DirectX SDK (June 2010)/Include/XAudio2.h> 

(其他一些说明,也build议使用完整path,可以在这里find: http : //blogs.msdn.com/b/chuckw/archive/2012/04/02/xaudio2-and-windows-8-consumer- preview.aspx )

结果:

 c:\program files (x86)\microsoft directx sdk (june 2010)\include\xaudio2.h(20): fatal error C1083: Cannot open include file: 'comdecl.h': No such file or directory 

果然,该文件使用尖括号包含comdecl.h ,指导VC ++查看当前文件夹之外。

我将DirectX SDK包含文件夹( $(DXSDK_DIR)/include )添加到项目#includesearchpath中,然后将#include保持原样,并且:

 c:\program files (x86)\microsoft directx sdk (june 2010)\include\dxgitype.h(12): warning C4005: 'DXGI_STATUS_OCCLUDED' : macro redefinition c:\program files (x86)\windows kits\8.0\include\shared\winerror.h(49449) : see previous definition of 'DXGI_STATUS_OCCLUDED' (...ad infinitum) 

(我的项目也包含了DirectX头文件。)

如果我将DirectX SDK包含文件夹添加到searchpath列表的另一端,则结果相同。

有没有人设法得到这些工作,而遵循这些(或任何其他)的指示?

Solutions Collecting From Web of "在Windows 7上使用XAudio2构build"

XAudio2 API现在是Windows 8中的系统组件.XAudio2的头文件和库在Windows SDK中可用。

那么,问题是你混合了DirectX SDK中的旧头文件和Win8 SDK中不兼容的新头文件。

大多数时候

 warning C4005: macro redefinition 

意味着你的代码编译和运行良好。 但为了防止将来出现可能的错误,您必须使用以下其中一项:

  • Windows 8 SDK v110_xp工具集(项目属性 – >常规 – >平台工具集)和旧的DirectX SDK。 有一些缺点:在这里读取底部
  • Windows 7 SDK v100工具集和旧的DirectX SDK。 您需要安装Windows 7 SDK 。
  • 只有Windows 8 SDK v110平台工具集。
  • 挖掘头,隔离和剥离XAudio2的东西,并使其可以独立使用任何SDKs。 但这不是个好主意=)

编辑:我编辑我的答案,因为我发现XAudio还没有过时=)

嘿,对不起,我知道我迟到了,但这篇文章

https://directxtk.codeplex.com/wikipage?title=Adding%20the%20DirectX%20Tool%20Kit%20for%20Audio&referringTitle=Writing%20custom%20shaders

详细说明如何包含遗留包含和库。 有一点需要注意,据我了解,在包含这些目录之后,您将拥有Windows 8和10所没有的Microsoft DirectX SDK(2010年6月)目录的依赖关系。 这意味着当你打包你的项目时,你应该包括/运行遗留的directx redist,以安装在新机器上。

你可能已经解决了这个问题,但希望其他任何发现这个问题的人都能看到这个问题。 希望能帮助到你!