You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

VS2019编译GDAL 3.7.0遇bool宏重定义错误,求解决方案

GDAL 3.7.0编译错误解决思路

从GitHub下载GDAL 3.7.0源码,使用CMake配合VS2019完成配置,将生成包输出至gdal3.7.0-built文件夹,双击gdal.sln编译时出现如下错误:

20>18>C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\VC\Tools\MSVC\14.29.30133\include\xkeycheck.h(55,1): fatal error C1189: #error:  The C++ Standard Library forbids macroizing the keyword "bool". Enable warning C4005 to find the forbidden define.
18>hdf5imagedataset.cpp
17>C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\VC\Tools\MSVC\14.29.30133\include\xkeycheck.h(53,1): warning C4005: 'bool': macro redefinition
17>C:\ProgramData\anaconda3\Library\include\stdbool.h(9): message : see previous definition of 'bool'

注:此问题为以下问题的后续:GDAL的CMake工具不接受PROJ 6.3.2,尽管要求版本≥6.0;完整错误输出可查看指定文档。

解决思路

  • 排查Anaconda头文件干扰:错误显示bool宏先在Anaconda的stdbool.h中定义,后被MSVC标准库重定义,说明CMake配置可能意外引入了Anaconda的头文件路径。
    • 检查CMake配置里的INCLUDE_DIRECTORIES,移除C:\ProgramData\anaconda3\Library\include这类不必要的路径。
    • 若需用Anaconda依赖,确保编译时优先加载MSVC标准库头文件,调整头文件包含顺序。
  • 取消bool宏定义:在编译配置中强制取消bool宏的定义。
    • 在CMakeLists.txt中添加add_definitions(-Ubool),或在VS项目属性的“预处理器定义”里移除bool相关项,添加Ubool。
  • 检查HDF5依赖配置:错误出现在hdf5imagedataset.cpp,说明HDF5相关路径可能有问题。
    • 确认CMake中HDF5的路径未指向Anaconda版本,改用独立编译的HDF5库,避免头文件冲突。
  • 启用C4005警告:按错误提示开启C4005警告,定位更多宏重定义问题,彻底排查冲突源。

内容的提问来源于stack exchange,提问作者Rex

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.10 15:53:38