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 ==========
链接器找不到定义D3DX11从内存创建效果功能。该函数是以下函数的一部分效果11框架。并且你需要链接Effects11.lib
来构建这个程序。
以前,要开发 DirectX 应用程序,您必须已经DirectX SDK安装。
现在,独立的 DirectX SDK 涉及遗留问题,现在它已成为视窗软件开发工具包(自 8.0 版本起)。安装 Visual Studio 2012 后你就得到了它。
现在的问题是这个 SDK 版本不包括 Effect11 框架等。
有几种方法可以解决此问题:
- 下载并安装旧版 DirectX SDK。编译时您会收到一些警告,因为旧的 DirectX SDK 和新的 Windows SDK 存在冲突。要解决这个问题,您可以切换到您的项目
v110xp
工具集或安装Windows 7 SDK并切换到v100
在项目的选项中。
- 对于这个示例程序,Luna 先生将编译后的库包含在
Common
源代码存档的文件夹。但我不确定它是否可以与 Win8 SDK 一起使用。
- 更正源代码并删除 Effect11 内容。如果你刚刚学习 DirectX,这并不是一件容易的事。
Chuck Walbourn - MSFT 的更多解释:
- DirectX SDK 在哪里?
- Direct3D 11 更新的效果
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)