如何在Windows 7上将DirectX 11与Visual Studio 2015工具集v140一起使用

亚历克斯·弗罗斯特

我正在基于DirectX 11创建该项目。以前,我一直在使用带有v110工具集的Visual Studio 2012进行开发。然后,我需要使用C ++ 11标准,因此我决定将其移至Visual Studio2015。另外,我正在使用Windows 7,并希望我的项目与该平台兼容(因此,我使用标准的Win项目,而不是适用于通用平台)。

在这里,我遇到了新的VS工具集v140的问题。由于使用DirectX 11 2010年6月SDK,我遇到了下一个编译错误:

1>C:\Program Files (x86)\Windows Kits\8.1\Include\shared\dxgi1_2.h(1271): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
1>C:\Program Files (x86)\Windows Kits\8.1\Include\shared\dxgi1_2.h(1271): error C2143: syntax error: missing ',' before '*'
1>C:\Program Files (x86)\Windows Kits\8.1\Include\shared\dxgi1_2.h(1275): error C2061: syntax error: identifier 'DXGI_RGBA'

我也在使用effects11和D3DX。因此,我不得不使用新工具集重新编译effects11。D3DX库又如何-我知道不建议您使用它。在我看来,正是这个库会导致编译错误。

另外,我已经在一个新的清晰项目中直接从Windows套件检查了DirectX 11的使用(在我的情况下,它使用的是8.1套件)。没有D3DX库,它可以正常工作。

有什么办法可以同时使用D3DX库和Win Kit,从而不会造成兼容性问题?还是应该使用某些库而不是D3DX(例如DXTK)?

UPD

我尝试将D3DX从我的项目和D3DX11Tex中排除,并使其完全适用于Windows Kits \ 8.1 \ + DirectXMath + DirectXTex(Microsoft Git库)。下一个错误发生了6次:

1>C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\include\xtree(2047): error C3848: expression having type 'const `anonymous-namespace'::StringCompare' would lose some const-volatile qualifiers in order to call 'bool `anonymous-namespace'::StringCompare::operator ()(PCHAR,PCHAR)'

项目路径中自动包含xtree.h所在的目录。据我了解,这还可以。

代码提示导致此错误是下一个:

bool _Compare(const key_type& _Left, const key_type& _Right) const
{   // compare key_type to key_type, with debug checks
    return (_DEBUG_LT_PRED(this->_Getcomp(), _Left, _Right));
}

所有6个错误都指向xtree.h中的该代码顺便说一下,我在许多头文件中都包含d3d11.h,它们相互链接很多次(因此d3d11.h不在层次结构的顶部,因为它包含单个文件,但是层次结构中的每个文件都包含头文件)。

问题:此文件在哪里使用(我不直接包含它)?可能是某个链接问题之王吗?还是某些版本之间存在某种冲突(我不知道怎么做,仅因为我不使用Dx11 2010年6月SDK,并且不尝试链接一些不存在的标头,例如D3DX11Tex)?

解决方案:xtree.h的问题在于使用非常数operator()的std :: map的自定义函子因此,将其更改为常数可以解决所有6个错误。

那DirectX问题呢...不幸的是,实际上没有办法将旧版本与新VS一起使用。因此,正如在答案和评论中提到的那样,根本不要使用D3DX。谢谢大家!

galop1n

如您所见,2010年6月版SDK很旧,并且与最新的Windows工具包冲突。Direct3DX也已被弃用,并且不再对其进行任何实际工作。

它的一部分已由Microsoft在名为dxtk的公共GitHub帐户上重写您可以考虑使用它。但是,您将无法使原始D3DX与现代版本的Windows SDK一起使用。

解决此问题的方法是删除对2010年6月DirectX SDK的依赖性,并替换项目中使用不推荐使用的功能的部分。作为替代,使用dxtk或您自己重写的功能。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

在Mac OSX上将JDK 7或更高版本与Android Studio和Eclipse一起使用

如何使Lombok与Visual Studio Code一起使用?

如何安装Windows 10 SDK以与Visual Studio 2017一起使用

如何在Visual Studio 2015中使用C#7?

在Windows 7上将phantomjs与RSelenium一起使用

如何在Windows下使用cmake生成使用Intel编译器的Visual Studio项目

在Windows 7(64位)上将j2pkcs11.dll与Java 8(64位)一起使用

如何在Visual Studio 2015中使用Clang为Windows编译C ++

在Windows 7上安装Visual Studio 2015社区版

通过MSBuild构建Visual Studio 2015 C ++项目(v140)失败-无法找到v140

如何在Visual Studio 2015中访问ASP配置工具

编译器指令如何在Visual Studio 2015中与project.json一起使用

Visual Studio 2017:工具集v140的vcvars

如何使用Visual Studio编译Windows的GMP

如何在Visual Studio Code上将外部程序集(.dll)添加到.NET Core 2.0

如何在Ubuntu的Visual Studio Code上的Odoo v11中开发(运行和调试)模块?

如何从Windows 7计算机在Visual Studio 2015上安装和使用构建工具v120(2013)?

如何强制cmake使用Visual Studio 2015(v140)平台工具集?

在Microsoft托管的Azure Devops构建管道代理上安装Visual Studio 2015工具包(v140)

如何在Visual Studio 2017上将类方法设置为参数并将其与lambda一起使用?

如何在Windows XP的Windows 98 SE中使用Visual Studio 2008编译应用程序

如何在Visual Studio 2010中“激活” c ++ 11标准?

在Windows 7上将通配符与mysqlimport一起使用

如何在Windows Visual Studio上使用SQL更新表

使打字稿与Visual Studio 2015 RC一起使用?

是否可以将Windows 10 WDK与Visual Studio 2013集成在一起?

如何让C#代码文件与Visual Studio 2015一起运行

如何将FSharp.Core 4.3与Visual Studio 2015 Community Edition一起使用

使用 pkcs11interop、c#、windows Visual Studio 2010 生成 PBKDF2 密钥