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

WSL下使用jsoncpp遇json.h找不到错误,求助解决方案

解决WSL Ubuntu中jsoncpp头文件找不到的问题

先确认jsoncpp的实际安装路径

Ubuntu通过apt install libjsoncpp-dev安装的jsoncpp,头文件默认放在/usr/include/jsoncpp/json/目录下,并非直接在系统默认的/usr/include根目录里。你可以用以下命令确认具体路径:

dpkg -L libjsoncpp-dev

执行后会列出所有安装文件,找到类似/usr/include/jsoncpp/json/json.h的条目,这就是头文件的实际位置。

两种可行解决办法

办法1:修改代码中的include语句

直接把代码里的#include <json.h>改成#include <json/json.h>,这样编译器会自动在默认的/usr/include目录下找到json子文件夹里的头文件,无需额外修改Makefile的包含路径。

办法2:调整Makefile的编译参数

如果不想修改代码,就在Makefile中添加头文件所在的父目录到包含路径,同时链接阶段必须指定jsoncpp库(否则编译通过后链接会报错):

CC = g++
CFLAGS += -Wall -g
# 添加jsoncpp头文件的父目录到包含路径
CFLAGS += -I/usr/include/jsoncpp
# 链接时指定jsoncpp库
LDFLAGS += -ljsoncpp

all: your_program

your_program: your_source.cpp
    $(CC) $(CFLAGS) $^ -o $@ $(LDFLAGS)

VS Code编辑器提示修正(可选)

如果VS Code仍对头文件路径标红,打开.vscode/c_cpp_properties.json,在includePath中添加/usr/include/jsoncpp:

{
    "configurations": [
        {
            "name": "Linux",
            "includePath": [
                "${workspaceFolder}/**",
                "/usr/include",
                "/usr/include/jsoncpp"
            ],
            "compilerPath": "/usr/bin/gcc",
            "cppStandard": "gnu++17"
        }
    ],
    "version": 4
}

测试验证

写一段简单代码验证是否正常工作:

#include <iostream>
#include <json/json.h> // 若用办法2则写#include <json.h>

int main() {
    Json::Value root;
    root["test"] = "hello jsoncpp";
    std::cout << root.toStyledString() << std::endl;
    return 0;
}

运行make生成可执行文件,执行后若能正常输出JSON内容,说明问题已解决。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 10:10:54