[英]D3DX10.h and D3DCompiler.h compatibility issue?
我与DirectXTutorial一起关注,遇到了一个我无法解决的问题。 过去,有些问题无法解决,例如D3DX11CompileFromFile(),因此我不得不使用D3DCompileFromFile并包含d3dcompiler.h。
现在,我要进行3D转换,我必须将D3DX10Math.h包含在所涉及的矩阵中。 为此,我必须再次编辑include和lib目录以包含DirectX SDK(2010年6月)。
一旦执行此操作,D3DCompileFromFile()就变得不确定。 我试过更改目录的顺序并更改标头中包含的顺序,但似乎没有任何作用。 他们只是不想一起工作。 这是我的包括:
#include <windows.h>
#include <windowsx.h>
#include <d3d11.h>
#include <d3dcompiler.h>
#include <DirectXPackedVector.h>
#include <D3DX10math.h>
与lib一起包括:
#pragma comment (lib, "d3dcompiler.lib")
#pragma comment (lib, "d3d11.lib")
#pragma comment (lib, "d3dx11.lib")
#pragma comment (lib, "d3dx10.lib")
另外,目录的图片: 目录
关于我在做什么错的任何想法? 还是我不知道某种不兼容?
基本问题是旧版DirectX SDK已过时,并且其中的标头比VS 2012或更高版本随附的标头更旧 。 参见MSDN
理想的解决方案是完全不使用旧版DirectX SDK内容。 您不会将D3DX10用于数学运算,而是使用DirectXMath 。 您不会使用D3DX11进行纹理加载,而是使用DirectX Tool Kit之类的其他解决方案。 有关替代品的完整列表,请参阅《不带D3DX的生活》 。
可能您正在使用一个较旧的教程,该教程希望您使用现在已弃用的东西,例如D3DX11。 您仍然可以这样做,但是您需要格外小心。 特别是,您需要在标准包含路径之后添加DirectX SDK包含/库路径。 这通常是在Visual C ++中完成的,方法是在项目设置中编辑VC ++目录页面,并确保在末尾而不是在开始时添加include / lib路径-这也意味着避免使用之前的“ 其他目录”选项。其他标题/库。
有关更多信息,请参见此MSDN和Zombie DirectX SDK的底部。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.