在 VS2015 Update 3 中构建 OpenCV 3.2 时 xtr1common 中出现大量错误

Posted

技术标签:

【中文标题】在 VS2015 Update 3 中构建 OpenCV 3.2 时 xtr1common 中出现大量错误【英文标题】:Tons of errors in xtr1common when building OpenCV 3.2 in VS2015 Update 3 【发布时间】:2017-03-25 15:57:11 【问题描述】:

在 Visual Studio 2015 Update 3 中构建一个简单的 OpenCV 应用程序时,使用 OpenCV 3.2,目标 x64(3.2 版本中没有 x86 库),我收到以下错误:

1>c:\program files (x86)\microsoft visual studio 14.0\vc\include\xtr1common(100): error C2737: 'std::is_same_v': 'constexpr' object must be initialized
1>c:\program files (x86)\microsoft visual studio 14.0\vc\include\xtr1common(100): error C2998: 'const bool std::is_same_v': cannot be a template definition
1>c:\program files (x86)\microsoft visual studio 14.0\vc\include\xtr1common(245): error C2737: 'std::is_integral_v': 'constexpr' object must be initialized
1>c:\program files (x86)\microsoft visual studio 14.0\vc\include\xtr1common(245): error C2998: 'const bool std::is_integral_v': cannot be a template definition
1>c:\program files (x86)\microsoft visual studio 14.0\vc\include\xtr1common(282): error C2737: 'std::is_floating_point_v': 'constexpr' object must be initialized
1>c:\program files (x86)\microsoft visual studio 14.0\vc\include\xtr1common(282): error C2998: 'const bool std::is_floating_point_v': cannot be a template definition
1>c:\program files (x86)\microsoft visual studio 14.0\vc\include\xtr1common(295): error C2737: 'std::is_arithmetic_v': 'constexpr' object must be initialized
1>c:\program files (x86)\microsoft visual studio 14.0\vc\include\xtr1common(295): error C2998: 'const bool std::is_arithmetic_v': cannot be a template definition
1>c:\program files (x86)\microsoft visual studio 14.0\vc\include\xstddef(697): error C2737: 'std::is_function_v': 'constexpr' object must be initialized
1>c:\program files (x86)\microsoft visual studio 14.0\vc\include\xstddef(697): error C2998: 'const bool std::is_function_v': cannot be a template definition

不知何故,我不认为这是 OpenCV 的问题,所以我想我在构建过程中遗漏了一些东西或配置错误。任何应该改变的建议表示赞赏:)

当谈到如何配置 VS 的建议时,我关注了以下站点 http://opencv-srf.blogspot.com/2013/05/installing-configuring-opencv-with-vs.html

添加源代码,虽然我认为这与构建的配置有关,而不是源代码:

#include "opencv2/opencv.hpp"

int main()

    return 0;

如OpenCV via NuGet packages with Visual Studio 2015, how to configure? 中所述,通过 Nuget 添加 OpenCV 3.1 时出现相同的错误。有趣的是,它看起来像在完全不同的情况下看到的类似错误 - Visual Studio 2015: C++ REST API (Casablanca) failing compilation in VS inlcudes/headers 并且通过将 VS2015 从 RC 重新安装到完整社区版来解决。我正在使用 VS2015 Enterprise Update 3 所以我希望不是根本原因...

【问题讨论】:

您希望我们如何在没有看到您的代码的情况下回答任何事情?至少发布SSCCE。 我已经添加了源代码 ;-) 摆脱stdafx.h;它有时会导致问题。 我摆脱了 stdafx,h,禁用了预编译的头文件,仍然存在相同的错误集 :( 任何其他建议表示赞赏 :) 【参考方案1】:

这个问题显然是由 VS2015 的问题引起的。至少在我修复了 VS2015 安装之后(从 Windows 中的Program and Features,问题消失了)

【讨论】:

以上是关于在 VS2015 Update 3 中构建 OpenCV 3.2 时 xtr1common 中出现大量错误的主要内容,如果未能解决你的问题,请参考以下文章

vs 2015 update 3各版本下载地址

Win10年度更新开发必备:VS2015 Update 3正式版下载汇总

(Win 7+VS 2013) WDK 8.1 Update 本身是不是足以安装构建环境?

vs2015with_update_3

TSX 文件中无法识别 React.js 代码(VS 2015 Update 1 RC)

vs2015 update2 有啥用