【问题标题】:DX11 Unresolved ExternalsDX11 未解决的外部
【发布时间】:2013-05-20 05:12:38
【问题描述】:
1>------ Build started: Project: Setup, Configuration: Debug Win32 ------
1>BoxDemo.obj : error LNK2019: unresolved external symbol _D3DX11CreateEffectFromMemory@24 referenced in function "private: void __thiscall BoxApp::BuildFX(void)" (?BuildFX@BoxApp@@AAEXXZ)
1>C:\Users\Josh\Documents\Game Institute\DirectX\Chapter 1\Projects\Setup\Debug\Setup.exe : fatal error LNK1120: 1 unresolved externals
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========

我正在使用 VS2012 并尝试使用 Frank D Lunas DX11 书中的示例程序设置 DX11。我不知道这个错误消息是什么意思,任何帮助将不胜感激。


1>------ Build started: Project: Setup, Configuration: Debug Win32 ------
1>Effects11d.lib(EffectAPI.obj) : error LNK2019: unresolved external symbol _D3DCompileFromFile@36 referenced in function _D3DX11CompileEffectFromFile
1>C:\Users\Josh\Documents\Game Institute\DirectX\Chapter 1\Projects\Setup\Debug\Setup.exe : fatal error LNK1120: 1 unresolved externals
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========

【问题讨论】:

    标签: visual-studio-2012 directx directx-11 build-error


    【解决方案1】:

    链接器找不到D3DX11CreateEffectFromMemory 函数的定义。这个函数是Effects11 框架的一部分。并且你需要链接Effects11.lib来构建这个程序。

    以前,要开发 DirectX 应用程序,您必须已安装 DirectX SDK。 现在独立的 DirectX SDK 涉及遗留问题,现在它是 Windows SDK 的一部分(从 8.0 版开始)。安装 Visual Studio 2012 后即可获得。

    问题是现在这个 SDK 版本不包括 Effect11 框架等。

    有几种方法可以解决这个问题:

    1. 下载并安装旧版 DirectX SDK。编译时会收到一些警告,因为旧的 DirectX SDK 和新的 Windows SDK 冲突。要解决此问题,您可以将项目切换到 v110xp 工具集或安装 Windows 7 SDK 并在项目选项中切换到 v100
    2. 对于这个示例程序,Luna 先生将编译好的库包含在源代码存档的Common 文件夹中。但我不确定它是否适用于 Win8 SDK。
    3. 更正源代码并去掉 Effect11 的东西。如果你只是学习 DirectX,这并不容易。

    来自 Chuck Walbourn - MSFT 的更多解释:

    【讨论】:

    • 我忘了提到我使用的是 Windows 7,如果这有什么不同的话。我已经安装了 2010 年 6 月的 SDK,并使用了 Luna 先生提供的 Common 文件夹并链接了上面提到的所有内容,这就是我得到的结果。
    • 我重建了两个 Effect11 库,在调试模式下我得到了“Effects11.lib”,所以我将它重命名为“Effects11d.lib”并将它们复制到“common”文件夹,现在我得到了另一个错误:(见第一篇文章)
    • Windows SDK 无法与 Windows 7 一起使用,人们总是忘记一遍又一遍地提及这一点。 Windows 目前是一团糟。他们正在推动 Windows 10 的东西并弃用 Windows 7,同时永远支持 Windows 7,这让开发人员很难做出决定。客户拥有 WINdows 7,因此我们必须继续支持它。
    猜你喜欢
    • 2017-07-09
    • 2015-01-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多