英特尔编译器使用错误的标头

2024-04-29

我试图找出为什么Intel Compiler 18.0,已安装after我的 Visual Studio 2017 安装使用的头文件MSVC,而不是它自己的(因为它会导致错误)。

一个简单的#include <vector>在 Visual Studio 中的 C++ 项目中编译时,在空翻译单元中触发此错误

1>C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\VC\Tools\MSVC\14.16.27023\include\type_traits(1562): error : expected a ">"
1>      _INLINE_VAR constexpr bool _Is_specialization_v<_Template<_Types...>, _Template> = true;

只是为了确定,为什么它使用MSVC无论如何包括?重新安装并没有导致任何变化。我根本不明白为什么会导致这个问题。有任何想法吗?


关于您收到的错误消息:

我认为您遇到了同样的问题this one https://developercommunity.visualstudio.com/content/problem/316602/intel-c-fails-to-compile-type-traits.html,大多数时候这个问题是由不兼容之间Intel Parallel Studio XE version and VS version。就像我在你的建议中那样另一个线程 https://stackoverflow.com/questions/58253760/intel-compiler-18-0-toolset-raises-exception-with-msbuild,您需要安装更高版本的Intel Parallel Studio XE版本才能解决该问题。

只是为了确定,为什么它使用 MSVC 包含呢? A 重新安装并没有导致任何变化。我简直想不通 出来,为什么会导致这个问题。有任何想法吗?

英特尔 C++ 编译器是 VS 的扩展。你可以检查一下Tools=>Extensions and Updates:

同意Adrian's I don't think Intel would want to 'take ownership' of MFC。对于一个简单的C++项目,如果我们设置Intel C++编译器作为其编译器,后面到底会发生什么呢?让我们看看项目文件(xx.vcxproj):

它设置了<PlatformToolset>Intel C++ Compiler 19.0</PlatformToolset>,并可能对xx.vcxproj,但该项目仍然有这样的定义<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />, <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />在其项目文件中。

做一些属性,关于MSVC的定义仍然会在构建过程中导入。这就是为什么您收到的错误消息包含MSVC...

Note:

  1. MSbuild https://learn.microsoft.com/en-us/visualstudio/msbuild/msbuild?view=vs-2019是VS的构建引擎,它读取的内容xx.vcxproj编译并构建项目。

  2. 有许多任务、属性、正常 C++ 构建过程的项目在导入的目标文件中定义,例如Microsoft.Cpp.Default.props,$(VCTargetsPath)\Microsoft.Cpp.targets等等。

  3. When we right-click project=>Intel Compiler=>Use Intel C++,它更改了 platformToolSet 设置,但仍然导入 xx.cpp.targets 作为构建过程的一部分。因此您可以看到有关 MSVC 的错误消息或构建输出中的内容。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

英特尔编译器使用错误的标头 的相关文章

随机推荐