我最近升级到了Visual Studio 2012 Ultimate。之前我一直在使用DirectX 11 June 2010 SDK 进行编程,现在我想继续使用Visual Studio 2012进行编程。但是,我发现VS2012自带了自己的DirectX SDK(位于Windows Kit 8.0中),我一直在尝试使用更新版本的d3d11迁移我的代码。一切都很顺利,直到我尝试在项目中使用
.fx文件
时出现问题。我必须在使用VS2012编译DirectX SDK中的Effects11示例并将lib文件链接到我的项目中。这也很顺利。然而,当我编译我的项目时,函数D3DX11CreateEffectFromMemory
返回一个E_NOINTERFACE错误(不支持此类接口)
。有人能告诉我为什么会这样吗?请注意,我正在使用来自Windows Kit的d3d11.lib和来自DirectX SDK的d3dx11.lib
。也许我不应该混合它们?然而,当我混合它们时,除了效果文件创建以外,其他所有东西都正常工作。
如果有帮助的话,我不知道这是否有帮助,如果我在项目设置中添加一个额外的库目录"DirectXSDKInstallPath\lib\x86\"
,它就可以正常工作。为什么会这样?这是否意味着我正在使用旧版本的库?这将导致winerror.h中有大量关于重新定义的头文件警告。