json-c错误:undefined reference to `json_object_object_get_ex‘

json-c的版本有多个,我接触过的有两个:
老版本,使用configure编译;
新版本,使用cmake编译。
现在网上能下载到的多是新的版本,长这样:
在这里插入图片描述
这种的编译方式也比较简单:

mkdir build
cd build
cmake ..
make
make install

对于老的编译器会出现下面的问题:
在这里插入图片描述
这个错误也好解决,打开Makefile,找到 -Wno-error=deprecated-declarations选项,删掉就行。
老版本的编译更方便,尤其是交叉编译的时候。
编译方法:

./autogen.sh
./configure
make
make install

json-c使用的时候有时候会出现标题上的错误:

undefined reference to `json_object_object_get_ex'

也是版本所致。
下面两个函数实现的功能是一样的:

json_object_object_get_ex
json_object_object_get

看下头文件的描述:

Deprecated/discouraged: used json_object_object_get_ex instead.

意思说 json_object_object_get 这个函数危险,用 json_object_object_get_ex 来代替。
所以以前的json-c不支持json_object_object_get_ex函数。修改的话,把代码:

json_object_object_get_ex(obj, "deviceid", &val);

改成:

val = json_object_object_get(obj, "deviceid");

功能一样,只是换了一个函数名字,函数的参数和返回值调整下。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值