jsoncpp operator= 中的未定义引用

Undefined reference in jsoncpp operator=

如何解决以下 linker 错误 w.r.t jsoncpp operator=.

我创建了一个这样的 Json::Value 对象

Json::Value pt;
pt["type"] = 5;
pt["uuid"] = "f8c74622-d45e-4cfa-fe00-5e7042431c72";
pt["start frame"] = 10;
pt["duration"] = 20;
pt["payload"] = "aedddefffsadf";

当我尝试 link 针对 Ubuntu 14.04

附带的默认 libjsoncpp-dev 时,出现以下 linker 错误

undefined reference to `Json::Value::operator=(Json::Value)'

额外信息:

而且我在编译时没有得到这个 linker 错误,并且 linked 针对来自 GitHub 的最新 jsoncpp。

value.h(由 ubuntu apt 安装)在 /usr/include/jsoncpp/json 中有

Value &operator=( const Value &other );

最新的 jsoncpp value.h 有

Value &operator=(Value other);

Debian 附带 jsoncpp-0.6.0-rc2。我敢打赌 Ubuntu 也是。

只需切换到 jsoncpp-0.8.z, which are binary-compatible with 0.6.0-rc2 并包含来自 1.y.z 的大部分增强功能和错误修复。

实际上 Debian 目前正在切换到 0.8.z。在 Ubuntu 更新其发布的版本之前,您可能不得不避免使用新功能(主要是 Builders),而是使用已弃用的 Readers/Writers,这可能就是您所做的已经。所以你应该很容易让一切正常工作。