DX11未解析的外部

时间:2013-05-20 05:12:39

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

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 ==========

1 个答案:

答案 0 :(得分: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,那就不容易了。
  4. 来自Chuck Walbourn的更多解释 - MSFT:

相关问题