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

时间:2015-06-25 04:34:39

标签: c json 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>将其包含在内。

3 个答案:

答案 0 :(得分:1)

尝试使用它:

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

因为如果您是用户,编译器将在标准库中搜索json.h。显然,它不在标准库中。如果您使用我告诉您的内容,编译器将搜索json.h中的curent workspace。

答案 1 :(得分:0)

静态链接时,gcc会带来已遇到的符号。因此,如果您在源文件之前传递-ljson,gcc将获取静态库,然后最终不需要任何东西。 因此,您应该在代码之后将库链接到

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

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

答案 2 :(得分:0)

使用 gcc parsejson.c -o parsejson -ljson-c 编译并使用 #include "json-c/json.h" 包含头