VS2019已配置C++17编译dbus-cxx仍提示需C++17问题求助
VS配置C17后dbus-cxx仍提示需要C17的解决方法
根本原因
这是Visual Studio的默认行为:即便你在项目常规设置中选择了C17标准,默认情况下__cplusplus宏不会同步更新为对应版本值,仍然保留为C98标准对应的199711L,恰好触发了dbus-cxx头文件里的版本校验逻辑,因此抛出报错。
解决方案
方法1:CMake生成阶段配置(推荐)
重新运行CMake生成VS项目文件,在原有命令基础上添加CMAKE_CXX_FLAGS参数即可:
cmake -G "Visual Studio 16 2019" -A x64 -DCMAKE_CXX_FLAGS="/Zc:__cplusplus" [你的其他cmake参数]
/Zc:__cplusplus是VS的专属编译选项,作用是让__cplusplus宏的取值和实际选择的C++语言标准保持一致。
方法2:手动修改已有VS项目配置
如果你不想重新生成CMake项目,可以直接在VS中修改项目属性:
- 右键点击报错的项目 → 选择「属性」
- 依次展开「配置属性 → C/C++ → 命令行」
- 在「其他选项」输入框中添加
/Zc:__cplusplus - 确认当前修改的是你正在使用的编译配置(比如当前编译的是Release x64,就要确保属性页左上角的配置和平台选择正确)
- 点击「确定」保存后重新编译即可
内容的提问来源于stack exchange,提问作者Jamie
相关产品推荐
相关产品推荐

