Visual Studio 2012认为我在Windows 8上并且要求我没有的库?

问题描述 投票:1回答:2

我从2010年6月起在DirectX 11 SDK中实现了其中一个示例的代码。我在2012年打开了我的项目,然后在2012年也打开了该示例,但是当我运行我的示例时,它需要XAudio2_8.dll。这甚至可能吗?那是Windows 8中的.dll,而SDK中的代码是2010年的-那时候该.dll就不存在了?最奇怪的是,SDK示例正在构建和运行,而我的项目要求使用.dll我链接了所有库,包含了所有库,检查了项目设置,在整个硬盘上搜索了这样的dll,什么也没有。。。可能引起这种问题的原因?我也遇到了各种各样的问题。 VS2012下SDK中的其他问题,例如无法识别dx11标头中的类型,等等。

windows-8 visual-studio-2012 directx-11 xaudio2
2个回答
3
投票

Windows 8.x SDK已将DirectX SDK集成到其中,这在很多方面意味着您根本不需要使用旧版DirectX SDK。特别是Direct3D,DirectSound,DirectInput等在Windows 8.x SDK中都具有正确的标题和库。

DirectX SDK非常令人尊敬,因此缺少许多较旧的东西:没有DirectMusic播放,DirectPlay等。我有blog帖子,提供了DirectX SDK中所有内容的完整清单。] >

变得复杂的地方是XAudio和XInput。 XAudio 2.8和XInput 1.4都是Windows 8.x OS的一部分,但在Windows 7上不可用。如果要将“下级”定位到Windows 7,则必须使用XAudio 2.7和XInput 1.3或XInput 9.1 .0。这个有点混乱的故事包含在两个博客条目中:一个XInput和一个XAudio。好消息是,实际上XInput的大多数使用都可以在XInput 9.1.0中实现,XInput 9.1.0是从Windows Vista开始的Windows操作系统的一部分。这是XAudio的“下层”,它要求将现代的Windows 8.x SDK和传统的DirectX SDK混合使用,还必须使用传统的DirectX SDK REDIST(DirectSetup)。

您收到“运行时”错误而不是“编译时”错误的根本原因是,对于Windows 7,您没有将_WIN32_WINNT设置为0x0601(对于Windows Vista,则没有将_WIN32_WINNT设置为0x0600)。如果有的话,Windows 8.x SDK中的XINPUT.H标头将自动使用XInput 9.1.0版本,而Windows 8.x SDK中的XAUIOD2.H标头会出错,并告诉您它不会适用于Windows 7。

最后,我已经清理了许多旧的Direct SDK示例并将它们重新发布到MSDN Code Gallery,这样它们就不需要传统的DirectX SDK。


1
投票

基本规则是,如果您在Win 8上开发XAudio2程序,请使用Windows SDK,否则请使用DirectX SDK。

© www.soinside.com 2019 - 2024. All rights reserved.