【问题标题】:D3DCompileFromFile unresolved externalD3DCompileFromFile 未解析的外部
【发布时间】:2014-01-06 15:49:54
【问题描述】:

我在创建使用默认 effects11.lib 的简单 directx 代码时遇到链接器错误。我得到的错误:

Effects11.lib(EffectAPI.obj):错误 LNK2001:未解析的外部符号 D3DCompileFromFile

正如我从一些链接中了解到的,我缺少一个 d3dcompiler.dll。我在项目中包含了 d3dcompiler.lib。但我不确定如何将 dll 链接到项目。我是这些东西的新手。

一个人通过这样做解决了他的问题:

“默认的 Effects 项目包括 Windows 开发工具包(对我来说是 C:\Program Files (x86)\Windows Kits\8.0)。先放置 DirectX SDK 路径后,此问题已修复”

但我不知道他的意思。

所以请帮我解决问题。我真的没有时间处理即将到来的学期项目。我是新人,所以请给我详细信息。

【问题讨论】:

  • 在项目中加入d3dcompiler.lib后到底是什么问题?
  • 上面给出的问题我已经链接到d3dcompiler.lib,但是还是找不到上面提到的函数。
  • 只是猜测:putting the DirectX SDK path first 表示更改链接器搜索目录的顺序,以便使用正确的 d3dcompiler.lib。尝试在您的计算机上搜索此文件,如果找到多个文件,请尝试每个文件。可能您需要 DirectX SDK 中的库,而不是其他开发工具包中的库。
  • 我该如何更改链接器的顺序?

标签: c++ visual-studio-2012 linker-errors directx-11


【解决方案1】:

从 /Configuration Properties/VC++ Directories/Library Directories 中获取 $(WindowsSDK_LibraryPath_x86) 条目,并将其插入到 Configuration Properties/Linker/General/Additional Library Dependencies 中的所有其他库依赖项之前。

砰!

【讨论】:

  • 如果可能的话,我想知道 - 为什么 - 这会解决它。
  • 这是大约一年前的事,记不太清了,但我想是因为Addition Library Dependencies下面的依赖会继承windowssdk库路径
【解决方案2】:

我继续使用 VS13,它解决了我的问题,我认为问题是因为我在发布模式中包含了 Effects11d.lib。我必须在发布模式下只包含 Effect11.lib。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-08-17
    • 2013-11-23
    • 1970-01-01
    • 2018-06-22
    • 2011-02-09
    • 1970-01-01
    相关资源
    最近更新 更多