gpt4 book ai didi

c++ - D3DX10.h 和 D3DCompiler.h 兼容性问题?

转载 作者:行者123 更新时间:2023-11-28 04:47:44 26 4
gpt4 key购买 nike

我在学习 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")

此外,目录图片: Directories

对我做错了什么有什么想法吗?还是存在某种我不知道的不兼容性?

最佳答案

基本问题是旧版 DirectX SDK 已被弃用,其中的 header 比 VS 2012 或更高版本随附的 header 。参见 MSDN

理想的解决方案是完全不使用旧版 DirectX SDK 内容。您不会将 D3DX10 用于数学运算,而是使用 DirectXMath .您不会使用 D3DX11 进行纹理加载,而是使用其他一些解决方案,例如 DirectX Tool Kit .有关更换的完整列表,请参阅 Living without D3DX .

可能您使用的是较旧的教程,它希望您使用现在已弃用的内容,例如 D3DX11。你仍然可以这样做,但你需要格外小心。特别是,您需要在标准包含路径之后添加 DirectX SDK 包含/lib 路径。这通常在 Visual C++ 中通过编辑项目设置中的 VC++ 目录页面并确保在结尾而不是开头添加 include/lib 路径来完成- -这也意味着避免使用其他 header /库之前的附加目录选项。

请参阅此 MSDN 的底部和 The Zombie DirectX SDK获取更多信息。

关于c++ - D3DX10.h 和 D3DCompiler.h 兼容性问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48939569/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com