这个问题是在学习 Introduction to 3D Game Programming with DirectX 11 一书时遇到
最正确的解决方案是这里
D3D11 D3DX11CreateEffectFromMemory returns E_NOITERFACE好像是因为D3DX库已经被弃用了. Effect也是. 而DIRECTX库也被包含在win sdk里面不再作为单独的SDK发布. 而D3DX的库在发布时使用的是VS2010编译的, 当使用VS2012或更高版本时, 会有错误
以上都是个人理解. 我可以保证的是肯定有理解的不对的地方.
在stackOverflow上的大神建议的是把D3DX和Effect都用最新的接口替换掉并给出了新旧接口的对照页面链接, 太麻烦了实在不适合我这种浅尝辄止的人.
最后我个人的解决方案是这样. VS2013中.
Project property -> Configuration Properties -> General -> Platform Toolset -> change the "Visual studio 2013 (v120)" to "Visual Studio 2013 - Windows XP (v120_xp)"
这样既可规避错误. 具体原因: 不明