这篇文章是翻译http://www.d3dcoder.net/网站上Frank Luna(龙书作者本人)的解决方案。
近来,我收到求助emails,emalis询问如何解决本书附带的代码使用Visula Studio 2015编译失败的问题。
这篇文章将讲解使用VS2015编译所必须的步骤,但在此之前,让我们先来看看为什么同样的代码在VS2015编译失败吧.
从Windows 8开始 DirectX不再作为独立的一部本而被集成在操作系统中,并且在之后的版本中DirectX随着系统的更新而更新。而且D3DX库被抛弃了并没有被集成在Windows8及以后的Windows版本中。同时XNA Math数学库也更名为DirectX Math库。
此外,当使用VS2015时,dxerr.lib库已经不适用了。所以我们使用VS2015编译本书附带的代码的策略如下:
1 寻找到代码中使用的D3DX函数的替代函数。这比听起来还要简单。因为DirectX小组已经开源了大部分的D3DX函数。
2 将xnamath替换为DirectX Math 这也同样很简单 因为DirectX Math和xnamth库基本上相同。我们只需要将所使用的结构都放入DirectX 命名空间;
3 找到dxerr.lib的替代品,或者停止使用dxerr.lib的函数。我们可以使用如下代码作为我们的错误追踪代码:
#define HR(x) \
{ \
HRESULT hr = (x); \
if(FAILED(hr)) \
{ \
DXTrace(__FILEW__, (DWORD)__LINE__, hr, L#x, true); \
} \
}
请牢记:一个可选的策略是安装
近来,我收到求助emails,emalis询问如何解决本书附带的代码使用Visula Studio 2015编译失败的问题。
这篇文章将讲解使用VS2015编译所必须的步骤,但在此之前,让我们先来看看为什么同样的代码在VS2015编译失败吧.
从Windows 8开始 DirectX不再作为独立的一部本而被集成在操作系统中,并且在之后的版本中DirectX随着系统的更新而更新。而且D3DX库被抛弃了并没有被集成在Windows8及以后的Windows版本中。同时XNA Math数学库也更名为DirectX Math库。
此外,当使用VS2015时,dxerr.lib库已经不适用了。所以我们使用VS2015编译本书附带的代码的策略如下:
1 寻找到代码中使用的D3DX函数的替代函数。这比听起来还要简单。因为DirectX小组已经开源了大部分的D3DX函数。
2 将xnamath替换为DirectX Math 这也同样很简单 因为DirectX Math和xnamth库基本上相同。我们只需要将所使用的结构都放入DirectX 命名空间;
3 找到dxerr.lib的替代品,或者停止使用dxerr.lib的函数。我们可以使用如下代码作为我们的错误追踪代码:
#define HR(x) \
{ \
HRESULT hr = (x); \
if(FAILED(hr)) \
{ \
DXTrace(__FILEW__, (DWORD)__LINE__, hr, L#x, true); \
} \
}
请牢记:一个可选的策略是安装