我正在开发一个 DirectX9 项目,现在是时候开始做精灵了,为此,我需要包含 d3dx9.h,所以在尝试正确链接一段时间后,这本身就很令人困惑,因为它发现d3d9.h 很好,它与 d3dx9 位于同一位置,我认为我只需要将它添加到其他库中,过了一段时间它终于起作用了。然而,在运行该程序时,我收到一个错误,来自 d3dx9core.h:
C2061: syntax error: identifier 'TEXTMETRICA'
我在网上找不到任何答案,也无法弄清楚是什么导致了这个问题。代码行是d3dx9core.h的330,
STDMETHOD_(BOOL, GetTextMetricsA)(THIS_ TEXTMETRICA *pTextMetrics) PURE;
它有四个错误,都指向这一行。有什么想法吗?
如果您在 VS 2015 或更高版本中使用旧版 DirectX SDK,则需要确保 DXSDK include/lib 路径位于标准 Windows 8.1 SDK / Windows 10 SDK 路径之后。这是因为旧版 DirectX SDK 具有某些 Windows 标头的过时副本。 详细信息位于
Microsoft DocsDirectX 9 已经很老了,实际上只需要针对 Windows XP。您应该查看 DirectX 11,特别是DirectX Tool Kit更新:的
SpriteBatch
。请参阅没有 D3DX 的生活。
如果您仍然坚持使用 Direct3D 9,您现在可以从 NuGet 获取旧版 D3DX9 帮助程序库,您可以将其与现代 Windows SDK 中的 Direct3D 9 标头一起使用。建议在任何情况下都不要使用旧版 DirectX SDK,避免旧版 DirectX SDK 安装程序的已知问题,无需使用旧版 DirectX 最终用户运行时 Redist,并更新 DLL 以使用 SHA-256 而不是已弃用的SHA-1 协同设计。请参阅此博文。