使用 json-c 时出现未定义的引用错误

Undefined reference error while using json-c

我想在我的程序中使用 json-c。编译(链接)时出现错误:

parsejson.c:(.text.startup+0xf): undefined reference to `json_object_new_object'
parsejson.c:(.text.startup+0x1c): undefined reference to `json_object_new_string'
parsejson.c:(.text.startup+0x2b): undefined reference to `json_object_new_int'
parsejson.c:(.text.startup+0x3a): undefined reference to `json_object_new_boolean'
parsejson.c:(.text.startup+0x4a): undefined reference to `json_object_new_double'
parsejson.c:(.text.startup+0x52): undefined reference to `json_object_new_array'
parsejson.c:(.text.startup+0x5f): undefined reference to `json_object_new_string'
parsejson.c:(.text.startup+0x6e): undefined reference to `json_object_new_string'
parsejson.c:(.text.startup+0x7b): undefined reference to `json_object_new_string'
parsejson.c:(.text.startup+0x8b): undefined reference to `json_object_array_add'
parsejson.c:(.text.startup+0x96): undefined reference to `json_object_array_add'
parsejson.c:(.text.startup+0xa1): undefined reference to `json_object_array_add'
parsejson.c:(.text.startup+0xb3): undefined reference to `json_object_object_add'
parsejson.c:(.text.startup+0xc3): undefined reference to `json_object_object_add'
parsejson.c:(.text.startup+0xd3): undefined reference to `json_object_object_add'
parsejson.c:(.text.startup+0xe5): undefined reference to `json_object_object_add'
parsejson.c:(.text.startup+0xf5): undefined reference to `json_object_object_add'
parsejson.c:(.text.startup+0xfd): undefined reference to `json_object_to_json_string'

我将 json-c 和我的程序放在同一个文件夹中,并使用 #include <json-c/json.h>.

将其包含在内

静态linking时,gcc会带来已经遇到的符号。因此,如果您在源文件之前传递 -ljson,gcc 将获取静态库,然后最终不需要它的任何内容。 所以你应该把库放在 link 反对 你的代码之后。

虽然您没有分享您的编译命令行说的内容,但我建议您尝试以下操作:

$ gcc -g -v -Wall -std=gnu99 -static -L/path/to/compiled/library parsejson.c -o parsejson -ljson

尝试使用这个:

#include "../json-c/json.h"

因为如果您使用编译器将在标准 libraries.Obviously 中搜索 json.h,它不在标准 library.if 中,您使用我告诉您的内容,编译器将在当前工作区中搜索 json.h。

尝试使用

gcc parsejson.c -o parsejson -ljson-c

编译使用

#include "json-c/json.h"

包括 header