链接器错误:无法打开输入文件“d3dx9.lib”

问题描述

这是一个非常简单的问题,但我已经搜索了一段时间并且没有运气。我应该将它添加到我相信的链接器中吗?即项目属性 > 链接器 > 输入 > 附加依赖项。我只是对该怎么做感到困惑。谢谢。

解决方法

最简单的解决方案是将 Microsoft.DXSDK.D3DX NuGet 包添加到您的项目中,而根本不使用旧版 DirectX SDK。这会将标头 d3dx9*.hd3dx10*.hd3dx11*.h 放入您的包含路径中。它还会将 d3dx9.libd3dx10.libd3dx11.lib 添加到您的链接设置中,并“并排”提供所需的运行时 DLL。见this blog post

否则,要集成旧版 DirectX SDK 需要在 VC++ 目录中进行一些特殊的包含/lib 路径排序,并且您将面临许多其他问题。有关详细信息,请参阅 Microsoft Docs

当然,真正的问题是“您为什么首先使用旧版 Direct3D 9 而不是 Direct3D 11?”。对于 Direct3D 11 或 Direct3D 12,您应该完全避免使用旧版 DirectX SDK 和 D3DX9/D3DX10/D3DX11。见Living without D3DX