当前位置: 首页 > news >正文

使用openMVS库,在VS2022中启用c++17标准编译仍然报错

使用openMVS库,在VS2022中启用c++17标准编译仍然报错

现象

项目中引用了某些开源库(例如openmvs2.1.0),编译时要求启用编译器对c++17的支持。

没问题!大家都知道在下图所示的位置调整C++语言标准:
在这里插入图片描述
但是,打开开关之后编译,依然报错:

在这里插入图片描述
这可真是一个令人百思不得其解的错误啊。报错的文件是官方的头文件type_traits,双击之后跳转的错误位置也看不出个所以然。

在这里插入图片描述
这下头大了。不过,之前编译openmvs库时,用的是同一版本的VS编译器,怎么就成功了呢?于是查看vcpkg自动编译openmvs时用cmake配置生成的CMakeCache.txt中的编译选项,才找到了真正原因,如下图所示:

在这里插入图片描述
图中标出来的选项是cmake生成的,并不常见,至少在VS2022中没有提供开关,而只能靠用户手动输入到属性页、C/C++、命令行的其他选项框中。

报错原因:__cplusplus

__cplusplus宏是MSVC编译器预定义的宏,它的值是许多语法特性的开关。前面讲了,要启用c++17标准,就在C++语言标准设置好即可。然而,__cplusplus宏值不随上面的C++语言标准/std 选项)设置而改变,需要同时添加:/Zc:__cplusplus编译选项,才能随着语言标准而改变,如下表所示:

/Zc:__cplusplus 选项/std 选项__cplusplus 值
Zc:__cplusplus/std:c++14(默认值)201402L
Zc:__cplusplus/std:c++17201703L
Zc:__cplusplus/std:c++20202002L
Zc:__cplusplus/std:c++latest当前最新日期,目前是202002L
Zc:__cplusplus-(已禁用)任何值199711L
未指定任何值199711L

表中的/std 选项就是上一节的C++语言标准属性。
可见,如果没有添加/Zc:__cplusplus__cplusplus宏的值始终都是199711L,启用的c++17标准也是不完整的。微软这么操作的理由是:有很多老代码写得不规范(不符合语言标准),之前版本的编译器(由于对语言标准的遵守不严格)能编译通过,我们希望使用新编译器时它们的改动也尽可能小。
于是,本来支持严格的标准C++语法的编译器的默认状态仍和原来一样,__cplusplus宏的值始终是199711L;直到开发者在编译器的命令行中加入/Zc:__cplusplus,它才真正变成实际使用语言标准的值。

其实多数情况下,__cplusplus宏的值对代码编译影响不大。但是很多高水平开源库使用了新语法,恰恰需要__cplusplus宏的值符合语言标准(/std 选项)才能编译通过,这是对开源开发者很不友好的。

P.S. 官方的愿景是,有朝一日仅需要设定/std 选项__cplusplus宏的值就随之改变,不需要额外添加/Zc:__cplusplus

解决方法

属性页—C/C++—命令行—其他选项中添加:/Zc:__cplusplus。重新编译,即可。

在这里插入图片描述

扩展阅读

/Zc-cplusplus的微软官方说明
C++语言标准切换选项
官方:终于能正确设定__cplusplus值了

用/std选项确定c/c++语言标准
强制符合语法标准选项/permissive-

一点认识:MSVC的C/C++编译器默认情况下实现了当前标准和未来一些标准中的语法。当指定语言标准为默认的/std:c++14时,大部分新标准的语法将被禁用,但仍有一部分在引入/std选项之前就实现的新语法标准可用。
但指定/std:c++xx(xx>14)时,新实现的c++xx以后的语法将不可用。

相关文章:

使用openMVS库,在VS2022中启用c++17标准编译仍然报错

使用openMVS库,在VS2022中启用c17标准编译仍然报错 现象 项目中引用了某些开源库(例如openmvs2.1.0),编译时要求启用编译器对c17的支持。 没问题!大家都知道在下图所示的位置调整C语言标准: 但是&#…...

uniGUI之上传文件UniFileUploadButton

TUniFileUploadButton主要属性: Filter: 文件类型过滤,有图片image/* audio/* video/*三种过滤 MaxAllowedSize: 设置文件最大上传尺寸; Message:标题以及消息文本,可翻译成中文 TUniFileUploadButton控件 支持多…...

福德植保无人机工厂:创新科技与绿色农业的完美结合

亲爱的读者们,欢迎来到福德植保无人机工厂的世界。这里,科技与农业的完美结合为我们描绘出一幅未来农业的新篇章。福德植保无人机工厂作为行业的领军者,以其领先的无人机技术,创新的理念,为我们展示了一种全新的农业服…...

JsRpc技术服务搭建,最简单的JSRPC,Flask+undetected-chromedriver

只需10来行代码快速实现JSRpc,最简单的JSRPC 使用Flask和undetected-chromedriver快速实现JsRpc 推荐Python版本3.7.x及以上,需要pip安装 pip install Flask pip install undetected-chromedriver __author__ jiuLiang __email__ "jiuliangef…...

<优化接口设计的思路>:接口安全

前言 一、接口安全的方式   1. 身份认证,鉴别客户端   2. 请求过程鉴权,防止请求被篡改   3. 访问控制,即控制客户端对API的访问权限 前言 某家电商平台上,用户可以通过客户端发起购物请求,并对所选商品进行下…...

Gitee基础知识

目录 1-gitee 1.1gitee介绍 1.2git与gitee的关系 1.3在国内为什么选择Gitee 2-注册与创建远程仓库 2.1注册 2.2创建远程仓库 2.3配置ssh公钥 2.3.1公钥的生成方法: 2.3.2 在gitee中配置公钥 2.3.4验证公钥 3-添加与推送远程仓库master 3.1基本命令…...

网络空间搜索引擎- FOFA的使用技巧总结

简介 FOFA是一款网络空间测绘的搜索引擎,旨在帮助用户以搜索的方式查找公网上的互联网资产。 FOFA的查询方式类似于谷歌或百度,用户可以输入关键词来匹配包含该关键词的数据。不同的是,这些数据不仅包括像谷歌或百度一样的网页,还…...

用户行为分析遇到的问题-ubantu16,hadoop3.1.3

用户行为分析传送门 我的版本 ubantu16 hadoop 3.1.3 habse 2.2.2 hive3.1.3 zookeeper3.8.3 sqoop 1.46/1.47 我sqoop把MySQL数据往hbase导数据时候有问题 重磅:大数据课程实验案例:网站用户行为分析(免费共享) 用户行为分析-小…...

camera曝光时间

曝光和传感器读数 相机上的图像采集过程由两个不同的部分组成。第一部分是曝光。曝光完成后,第二步就是从传感器的寄存器中读取数据并传输(readout)。 曝光:曝光是图像传感器进行感光的一个过程,相机曝光时间&#xf…...

Vue 项目中使用 debugger 在 chrome 谷歌浏览器中失效以及 console.log 指向去了 vue.js 代码

问题 今天在代码里面输出 console.log 信息直接指向了 vue.js,并且代码里面写了 debgger 也不生效 解决 f12 找到浏览器的这个设置图标 找到这个 ignore list 的 custom exclusion rules 取消掉 /node_modules/|/bower_components/ 这样就正常了...

翻译: ChatGPT Token消耗粗略计算英文就是除以四分之三

在这个视频中,我想带你快速浏览一些例子,以建立对在软件应用中使用大型语言模型的实际成本的直观感受。让我们来看看。这是一些示例价格,用于从不同的大型语言模型获取提示和回应,这些模型对开发者可用。即,如果你在你…...

【线性代数】期末速通!

1. 行列式的性质 1.1 求一个行列式的值 特殊地,对角线左下全为0,结果为对角线乘积。行 r 列 c 1.2 性质 某行(列)加上或减去另一行(列)的几倍,行列式不变某行(列)乘 …...

速盾网络:业务卓越,数字安全的领先者

在数字时代的浪潮中,业务成功需要强大的数字基石。速盾网络以其出色的CDN加速、高防IP、SDK游戏盾和抗DDoS攻击等业务,成为业界领先的数字安全保障者,为您的业务提供全方位的支持与保护。 CDN加速:业务飞跃的翅膀 速盾网络以全球…...

Python 全栈体系【四阶】(七)

第四章 机器学习 六、多项式回归 1. 什么是多项式回归 线性回归适用于数据呈线性分布的回归问题。如果数据样本呈明显非线性分布,线性回归模型就不再适用(下图左),而采用多项式回归可能更好(下图右)。例…...

智能优化算法应用:基于蛾群算法3D无线传感器网络(WSN)覆盖优化 - 附代码

智能优化算法应用:基于蛾群算法3D无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用:基于蛾群算法3D无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.蛾群算法4.实验参数设定5.算法结果6.参考文献7.MA…...

Tekton 克隆 git 仓库

Tekton 克隆 git仓库 介绍如何使用 Tektonhub 官方 git-clone task 克隆 github 上的源码到本地。 git-clone task yaml文件下载地址:https://hub.tekton.dev/tekton/task/git-clone 查看git-clone task yaml内容: 点击Install,选择一种…...

高通平台开发系列讲解(AI篇)SNPE工作流程介绍

文章目录 一、转换网络模型二、量化2.1、选择量化或非量化模型2.2、使用离线TensorFlow或Caffe模型2.3、使用非量化DLC初始化SNPE2.4、使用量化DLC初始化SNPE三、准备输入数据四、运行加载网络沉淀、分享、成长,让自己和他人都能有所收获!😄 📢本篇章主要介绍SNPE模型工作…...

YoloV8改进策略:ASF-YOLO,结合了空间和尺度特征在小目标和密集目标场景有效涨点

摘要 本文提出了一种新型的Attentional Scale Sequence Fusion based You Only Look Once (YOLO)框架(ASF-YOLO),该框架结合了空间和尺度特征,以实现准确且快速的细胞实例分割。该框架建立在YOLO分割框架之上,采用Scale Sequence Feature Fusion (SSFF)模块增强网络的多尺…...

OpenCV-8RGB和BGR颜色空间

一. RGB和BGR 最常见的色彩空间就是RGB,人眼也是基于RGB的色彩空间去分辨颜色。 OpenCV默认使用的是BGR. BGR和RGB色彩空间的区别在于图片在色彩通道上的排列顺序不同。 二.HSV, HSL和YUV 1.HSV(HSB) OpenCV用的最多的色彩空间是HSV. Hue:色相&…...

阿里云主导《Serverless 计算安全指南》国际标准正式立项!

日前,在韩国召开的国际电信联盟电信标准分局 ITU-T SG17 全会上,由阿里云主导的《Serverless 计算安全指南》国际标准正式立项成功。 图 1 项目信息 在现今数字化时代,Serverless 计算正逐渐成为云计算的一个新的发展方向,其灵活…...

LabVIEW PC端软件开发:架构设计、性能优化与工程化实践

1. 项目概述:为什么选择在PC上深耕LabVIEW开发?当大家谈论起LabVIEW,很多人的第一印象可能还停留在它与各种数据采集卡、PLC、嵌入式硬件绑定的场景里。作为一个在这个图形化编程环境里摸爬滚打了十多年的老工程师,我想说&#xf…...

树莓派5 vs 树莓派4:从硬件架构到应用场景的全面对比与实战指南

1. 项目概述:为什么我们需要重新审视树莓派5?如果你和我一样,从树莓派2、3、4一路用过来,每次新版本发布都像是一次“挤牙膏”式的升级,那么树莓派5的到来,绝对会打破你的固有印象。它不再仅仅是“更快一点…...

3分钟极速激活:KMS智能激活工具让你的Windows和Office永久免费使用

3分钟极速激活:KMS智能激活工具让你的Windows和Office永久免费使用 【免费下载链接】KMS_VL_ALL_AIO Smart Activation Script 项目地址: https://gitcode.com/gh_mirrors/km/KMS_VL_ALL_AIO 还在为Windows系统频繁弹出激活提示而烦恼吗?Office文…...

WinFlexBison:构建高性能Windows平台词法语法分析器的专业解决方案

WinFlexBison:构建高性能Windows平台词法语法分析器的专业解决方案 【免费下载链接】winflexbison Main winflexbision repository 项目地址: https://gitcode.com/gh_mirrors/wi/winflexbison 在Windows平台开发编译器、解释器或复杂配置文件解析器时&#…...

gprMax模拟结果看不懂?手把手教你用Paraview可视化不规则地质雷达模型

gprMax模拟结果可视化实战:用Paraview解析复杂地质雷达模型 地质雷达模拟完成后,面对海量的三维数据,许多研究者常陷入"数据在手,却无从下手"的困境。特别是当模型包含不规则异常体时,传统二维切片往往难以…...

从审批流到业务闭环:企业流程管理软件的价值变化

从审批流到业务闭环:企业流程管理软件的价值变化 很多企业最早上 OA,是为了“让审批在线上走”。请假、报销、合同、采购、用印都能提交、审核、归档,确实比纸质单据和微信群规范。但随着业务复杂度提升,企业会发现:审…...

ARM Cortex-R中断处理与ECC机制详解

1. ARM Cortex-R中断处理机制深度解析在嵌入式实时系统中,中断处理机制的设计直接影响系统的响应速度和可靠性。ARM Cortex-R系列处理器作为面向实时控制应用的处理器架构,其中断处理系统经过精心设计,能够满足工业控制、汽车电子等领域的严苛…...

listmonk CI/CD安全扫描集成:在部署前发现漏洞

listmonk CI/CD安全扫描集成:在部署前发现漏洞 邮件营销系统作为企业与用户沟通的重要渠道,其安全性直接关系到用户数据保护和品牌声誉。根据行业统计,超过68%的邮件系统漏洞是在生产环境中被发现的,而此时修复成本已增加10倍以上…...

5分钟掌握XUnity自动翻译器:打破游戏语言障碍的终极指南 [特殊字符]

5分钟掌握XUnity自动翻译器:打破游戏语言障碍的终极指南 🎮 【免费下载链接】XUnity.AutoTranslator 项目地址: https://gitcode.com/gh_mirrors/xu/XUnity.AutoTranslator 你是否曾因语言障碍而错过心仪的游戏大作?XUnity自动翻译器…...

Windows 11系统优化终极指南:免费提升性能与隐私保护的完整方案

Windows 11系统优化终极指南:免费提升性能与隐私保护的完整方案 【免费下载链接】Win11Debloat A simple, lightweight PowerShell script that allows you to remove pre-installed apps, disable telemetry, as well as perform various other changes to declutt…...