在Windows 7上使用XAudio2构建

时间:2013-06-13 21:54:43

标签: windows windows-7 visual-studio-2012 directx xaudio2

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

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

正如所建议的那样,我将包括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 ++没有像这样扩展环境变量。所以我将#include替换为直接包含它的那个:

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

(其他一些说明,也建议使用完整路径,可在此处找到: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)添加到项目#include搜索路径中,然后保留#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包含文件夹添加到搜索路径列表的另一端,则结果相同。

是否有人在遵循这些(或任何其他)指示的同时设法使其中的任何一个工作?

2 个答案:

答案 0 :(得分:0)

  

XAudio2 API现在是Windows 8中的系统组件。标题   Windows SDK中提供了XAudio2的库和库。

嗯,问题是你混合了来自DirectX SDK的旧标题和来自Win8 SDK的新标题,这些标题并不打算一起使用。

大多数时候

warning C4005: macro redefinition

表示您的代码编译并运行良好。 但为了防止将来出现可能的错误,您必须使用以下方法之一:

  • Windows 8 SDK v110_xp 工具集(项目属性 - &gt;常规 - &gt;平台工具集)和旧版DirectX SDK。有一些缺点:在底部阅读here
  • Windows 7 SDK v100 工具集和旧版DirectX SDK。您需要安装Windows 7 SDK
  • 仅限Windows 8 SDK v110 平台工具集。
  • 挖掘标题,隔离并剥离XAudio2内容,使其可以独立于任何SDK使用。但这不是一个好主意=)

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

答案 1 :(得分:0)

嘿抱歉,我知道我迟到了,但这篇文章

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以便在新机器上安装。

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