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 ==========
答案 0 :(得分:1)
链接器找不到D3DX11CreateEffectFromMemory函数的定义。此函数是Effects11框架的一部分。您需要链接Effects11.lib
来构建此程序。
以前,要开发DirectX应用程序,您必须已安装DirectX SDK。 现在,独立的DirectX SDK涉及遗留问题,现在它已成为Windows SDK的一部分(自8.0版本起)。安装Visual Studio 2012后就可以了。
问题是现在这个SDK版本不包括Effect11框架等等。
有几种方法可以解决这个问题:
v110xp
工具集或安装Windows 7 SDK并切换到项目选项中的v100
。Common
文件夹中包含已编译的库。但我不确定它是否适用于Win8 SDK。来自Chuck Walbourn的更多解释 - MSFT: