【问题标题】:DirectX 11 Effects11.lib Effects11d.lib linker errorDirectX 11 Effects11.lib Effects11d.lib 链接器错误
【发布时间】:2014-01-05 19:01:21
【问题描述】:

好的,我正在学习 DirectX 11,并尝试了 Frank D Luna 的 Direct3D 简介中的 BoxDemo 代码。但我收到以下链接器错误:

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

我听说我必须在发布和调试模式下构建 Effects11.lib。我也有点讨厌。我所做的是转到 Samples\C++\Effects11\ 文件夹。在 VS2012 中打开解决方案并构建它在发布和调试模式下获得了 Effects11.lib。将调试重命名为 Effects11d.lib。将两个库放在项目文件夹中,并将它们添加到链接器->输入->附加依赖项中。我的目标平台是 x64,我的包含目录当前同样指向 directx 包含和 lib 目录。

那么我的问题是什么?为什么编译器找不到 Effects11.lib?我做对了吗?请帮我 。 提前致谢

编辑:所以我的问题可能在于 d3dcompiler.lib。但是我已经在链接器->输入中添加了 d3dcompiler.lib。但是在构建 Effects11.lib 时我还必须添加 d3dcompiler.lib 吗?

【问题讨论】:

  • 您的“附加库目录”设置为:“$(DXSDK_DIR)\Lib\x86”还是“$(DXSDK_DIR)\Lib\x64”?如果是前者,并且您的目标是 x64,则您链接到了错误的库。

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


【解决方案1】:

尝试在发布模式下链接 Effects11.lib 和在调试模式下的 Effects11d.lib。作者 Frank D Luna 使用了我使用的默认路径并为我工作。其他路径对我不起作用。还是不确定

【讨论】:

    【解决方案2】:

    问题不在于无法找到 Effects11.lib。编译器告诉您的是,在链接时无法找到来自 Effects11.lib 的符号(在本例中为 D3DCompileFromFile)。

    您需要根据http://msdn.microsoft.com/en-us/library/windows/desktop/hh446872.aspx链接包含D3DCompileFromFile的库,看起来是D3dcompiler.lib。

    【讨论】:

    • 在构建 Effects11.lib 或尝试构建项目时是否必须链接 d3dcompiler.lib?我已经在链接器中包含了 d3dcompiler.lib。
    • @user3163223 你甚至不需要链接到 D3DCompiler.lib。只需确保将 D3DCompiler.dll 与您的程序一起分发即可。
    • 对不起,这听起来很愚蠢。你的意思是我在编译的时候必须在项目文件夹中添加D3DCompiler.dll?
    • stackoverflow 中的一篇文章建议这样做:默认的 Effects 项目包括 Windows 开发工具包(对我来说是 C:\Program Files (x86)\Windows Kits\8.0)。先放 DirectX SDK 路径后,这个问题就解决了。但我无法从中获得太多收益
    • 我在 windows sdk 中找到了 d3dcompiler_46.dll。但是我该怎么用呢??
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多