Visual Studio 2019编译Cap'n Proto报错缺失win32-api-version.h
故障原因
这不是手动漏加Visual Studio项目配置项导致的问题。win32-api-version.h是CMake配置阶段自动生成的头文件,该报错本质是CMake配置环节没有正确生成这个文件,或是文件的生成路径没有被加入kj项目的头文件搜索目录列表。
修复步骤
- 清空之前CMake生成的所有构建缓存,直接删除整个build输出目录,不要复用旧缓存重新生成,避免CMake因为缓存命中跳过必要的文件生成步骤。
- 确认本地安装的CMake版本不低于3.12,在源码根目录(即存放顶层
CMakeLists.txt的目录)重新执行CMake配置,不要进入src/kj等子目录单独执行配置操作。 - 配置完成后先到你指定的CMake构建输出目录下,检查
src/kj路径下是否存在win32-api-version.h文件:- 如果文件存在:打开VS解决方案中kj项目的属性页,在「C/C++ → 常规 → 附加包含目录」配置项中添加该文件所在的完整路径,保存后重新生成ALL_BUILD目标即可。
- 如果文件不存在:翻查CMake配置阶段的输出日志,搜索
win32-api-version相关的报错记录,这类情况通常是CMake版本不符合要求、源码包不完整导致的,替换为符合版本要求的CMake、重新解压完整的Windows适配源码包后再次配置即可。
- 不要从其他渠道手动拷贝同名
win32-api-version.h文件放到源码目录,这个头文件内的Windows API版本宏是根据当前构建环境自动生成的,手动拷贝会导致宏定义不匹配,后续编译或运行时出现难以排查的兼容问题。
触发该问题的核心报错日志片段:
2>C:\Users\snjvs\capnproto-c++-win32-0.10.0\capnproto-c++-0.10.0\src\kj\debug.c++(23,10): fatal error C1083: Cannot open include file: 'win32-api-version.h': No such file or directory
内容的提问来源于stack exchange,提问作者Sanjeev Singh
相关产品推荐
相关产品推荐

