fis*_*ood 15 directx winapi windows-8 visual-studio-2012
我的开发平台是windows 7 x64.我已经安装了VS2012,我想编译一个包含一些Dx11代码的项目.
具体来说,它包括以下文件:
#include <d3dx11.h>
#include <d3dx10.h>
Run Code Online (Sandbox Code Playgroud)
和链接
#pragma comment (lib, "d3dx11.lib")
#pragma comment (lib, "d3dx10.lib")
Run Code Online (Sandbox Code Playgroud)
我已经在我的开发机器上安装了VS2011,但我想在VS2012中尝试使用本机C++的单元测试工具.
由于安装了VS2011并使用DirectShow代码,我安装了Windows 7.1 SDK.
VS2012选择了这个并引用了7.1 SDK,但在VS2012下使用引用的7.1 SDK编译我的项目给出了错误:
"warning C4005: '__useHeader' : macro redefinition"
Run Code Online (Sandbox Code Playgroud)
我用Google搜索了这个,并在social.msdn.microsoft.com上找到了类似我的查询.并且解决方案建议使用Windows 8工具包而不是7.1 SDK进行链接以解决此问题.
Windows 8套件包括d3d11.h之类的标题,但不包括d3dx11.h.
我怎样才能包括与Windows 8的试剂盒,但没有得到多个"宏定义"错误一起d3dx11(从DX SDK)?
fis*_*ood 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的中期版本!