【发布时间】:2019-07-05 04:47:08
【问题描述】:
使用VS2018Pro,Windows10,
在跨项目文件拉入 DirectXTex.h、DirectXMath.h 和 DirectXCollision.h 时,我遇到了许多重新定义编译错误。
DirectXMath 和 DirectXCollision 是 Win10SDK 标头的一部分,我从 github 存储库中提取了 DirectXTex 并将其放在我的项目文件夹的本地。
在我的代码库中,我需要在各种文件中包含 DirectXTex.h、DirectXMath.h 和 DirectXCollision.h 标头,但是我在 DirectX 命名空间中遇到了许多重新定义错误和重复项。我知道我可能必须先包含一个(我已经尝试了许多变体,例如 DirectXTex 引入了 DirectXMath),但我无法编译。
有人知道在项目文件中提取这些包含的正确顺序吗?
【问题讨论】:
-
这些应该都可以正常工作。标头都使用
#pragma once,所以它们不应该有重复。您可以发布这些错误之一的示例吗? -
确保您没有在任何地方使用
xnamath.h...它与 DirectXMath 冲突。见this blog post。 -
嗨 Chuck,我根本没有使用 xnamath.h。假设我在 model.h 中包含 DirectXCollision.h 和 DirectXTex.h,并将 sprite.h 拉入 DirectXMath.h 和 DirectXTex 然后我得到错误..
-
具体有哪些错误?
-
天哪!周末休息后,我注意到我有一个我自己的头文件从你的 DirectXMath 存储库的克隆中提取 DirectXMath.h(我在项目开始时克隆了它),而我所有其他头文件都在提取 DirectXMath.h来自 Win10 SDK。在纠正了这个明显的错误之后,所有的编译都很好并且符合预期。如果我浪费了您的任何时间,我深表歉意。
标签: windows-10 direct3d11 directxmath visual-c++-2017