You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多
文档控制台
免费开始使用

Ubuntu 22.04下C++17程序使用nlohmann JSON解析器遇编译错误求助

解决Ubuntu 22.04下g++编译nlohmann JSON的头文件问题

先纠正你的编译命令错误

你当前的编译命令g++ geojson geojson.cpp -std=c++17 ./geojson参数顺序完全错误,正确的编译命令应该是:

g++ geojson.cpp -std=c++17 -o geojson

其中-o geojson指定编译后的可执行文件名为geojson,参数顺序要遵循「源文件在前,选项在后」的基本规则。

两种解决头文件找不到的方案

方案一:直接安装系统包(最省心)

Ubuntu 22.04官方源里已经提供了nlohmann JSON的开发包,直接安装即可:

sudo apt update && sudo apt install libnlohmann-dev

安装完成后,你的代码可以保留#include <nlohmann/json.hpp>,编译时无需额外指定头文件路径,g++会自动从系统默认的include目录找到它。

方案二:手动放置单头文件(无需安装系统包)

如果你坚持用手动下载的单头文件版本,需要按以下步骤操作:

  1. 在你的项目根目录下创建include/nlohmann目录结构
  2. 将下载的json.hpp文件放入include/nlohmann目录中
  3. 代码里保持#include <nlohmann/json.hpp>不变
  4. 编译时添加-I./include参数,告诉g++去当前目录的include文件夹下查找头文件:
g++ geojson.cpp -std=c++17 -I./include -o geojson

你之前操作的问题点

  1. 编译命令参数顺序错误,导致命令逻辑混乱
  2. 手动放置头文件时,没有将json.hpp放在nlohmann子目录下,而头文件内部的引用是#include <nlohmann/...>格式,g++无法找到对应路径的文件,因此报错。

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

火山引擎 最新活动