我的开发平台是windows 7 x64。 我已经安装了VS2012,我想编译一个包含一些Dx11代码的项目。

具体来说,它包括以下文件:

#include <d3dx11.h>
#include <d3dx10.h>

和链接

#pragma comment (lib, "d3dx11.lib")
#pragma comment (lib, "d3dx10.lib")

我已经在我的开发机器上安装了VS2011,但我想在VS2012中尝试使用本机C ++的单元测试工具。

由于安装了VS2011并使用DirectShow代码,我安装了Windows 7.1 SDK。

VS2012选择了这个并引用了7.1 SDK,但在VS2012下使用引用的7.1 SDK编译我的项目给出了错误:

"warning C4005: '__useHeader' : macro redefinition"

我用Google搜索了这个,并在social.msdn.microsoft.com上找到了类似我的查询 并且解决方案建议使用Windows 8工具包而不是7.1 SDK进行链接以解决此问题。

Windows 8套件包括d3d11.h之类的标题,但不包括d3dx11.h。

如何将d3dx11(来自Dx SDK)与Windows 8工具包一起包含在内,但是没有出现多个“宏重新定义”错误?

#1楼 票数:17 已采纳

我在这个MSDN页面中发现了以下相当恼人的引用。

D3DX不被视为在Windows 8中使用Direct3D的规范API,因此不包含在相应的Windows SDK中。 研究使用Direct3D API的备用解决方案。

对于旧版项目,例如Windows 7(及更早版本)的DirectX SDK示例,使用DirectX SDK使用D3DX构建应用程序需要执行以下步骤:


按如下所示修改项目的VC ++目录,以使用SDK标头和库的正确顺序。

一世。 打开项目的“属性”,然后选择“VC ++目录”页面。
II。 选择所有配置和所有平台。
III。 设置这些目录如下:

可执行目录:(在右侧下拉列表中)

包含目录:$(IncludePath); $(DXSDK_DIR)包含

包括库目录:$(LibraryPath); $(DXSDK_DIR)Lib \\ x86

IV。 单击“应用”
v。选择x64平台。 六。 设置Library目录如下:

库目录:$(LibraryPath); $(DXSDK_DIR)Lib \\ x64

无论您的项目中包含“d3dx9.h”,“d3dx10.h”或“d3dx11.h”,请务必明确包含“d3d9.h”,“d3d10.h”和“dxgi.h”,或“ d3d11.h“和”dxgi.h“首先确保你拿到新版本。

如果需要,您可以禁用警告C4005; 但是,此警告表示您正在使用这些标头的旧版本。

删除项目中对DXGIType.h的所有引用。 Windows SDK中不存在此标头,并且DirectX SDK版本与新的winerror.h冲突。

所有D3DX DLL都通过DirectX SDK安装安装到您的开发计算机上。 确保将所需的D3DX依赖项与任何样本或应用程序一起重新分发(如果将其移动到另一台计算机)。

请注意,D3DX11当前使用的替代技术包括DirectXTex和DirectXTK。 D3DXMath被DirectXMath取代。

FFS微软,请不要像这样改变API的中期版本!

  ask by fishfood translate from so

未解决问题?本站智能推荐:

1回复

安装Windows8SDK之后,DirectX组件应该放在哪里?

我安装了Windows 8 SDK(应该包括DirectX SDK)。 但是我的directX东西不起作用(请参阅有关此问题 )。 但是,在另一个问题上,我想问一问在安装Windows 8 SDK之后所有DirectX SDK的东西应该在哪里。 如果答案是“很多地方”,那就放下这个文
2回复

如何在VisualStudio11中使用图形调试器?

我正在尝试使用来自MS DirectX教程示例应用程序的 Lesson3.Cubes中的示例代码来使图形调试器正常工作,但无法正常工作。 我已经尝试过按ALT + F5来运行诊断程序,但是当我这样做时,VSGraphicsHelper.dll中会引发异常,并且该应用程序无法运行。 它可以在
4回复

找不到用于DirectX编程的d3dcompiler_43.dll

我正在尝试学习DirectX编程。 但我遇到了障碍。 我好像错过了这个文件:d3dcompiler_43.dll 我安装了(按此顺序): Visual Studio 2012 Windows 8 Windows Phone 8 SDK Windows 8 SDK
3回复

在VisualStudio2012中使用DirectX

我有一些用C#编写的DirectX项目,我需要专门通过Visual Studio 2012运行。 所有这些项目都使用名为“Microsoft.DirectX”的命名空间。 Microsoft Windows SDK在我的Windows 8计算机上完全成功安装,但是此命名空间仍然无法识别。
2回复

从8和8.1开始,WindowsSDK中是否缺少“dxsdkver.h”头文件?

我正在尝试从最新的稳定版本(2.0.0)编译SDL2。 由于缺少DirectX标头,特别是dxsdkver.h ,在Visual Studio 2012中Windows 8上的构建失败。 我知道Microsoft在Windows 8中将DirectX和Windows SDK合并在一起,但我无
1回复

如何在没有延迟的情况下在Windows中重新定位图形?

我正在尝试为Windows 8编写自定义光标图形。 我将它用于一个使用一个或任意数量的Wiimotes向Windows发送触摸输入的应用Windows ,这意味着我需要能够显示多个cursors 。 我不能使用cursor的构建来进行触摸,因为从远处观看时很难看到它们。 目前我正在为每个
1回复

数组Win32中的^

我有一个为Metro风格编写的DirectX 11.1程序,我想将其转换为Win32应用程序。 我使用了很多WinRT库,其中大多数是为HWND创建的。 但我仍然有一个问题: 在Metro Style应用程序上,为了使用HLSL文件,这就是我所使用的: 但我不知道Win32(hwnd
1回复

无法在VisualStudio中加载Windows8SDK示例?

我正在尝试加载Windows 8 SDK样本随附的DirectX样本。 最初,VS2010告诉我,解决方案是使用Visual Studio的较新版本创建的,因此我安装了VS2012 Express。 现在,当我尝试在VS2012中加载示例时,出现以下错误,并且不会加载项目。 http:/