架构x86_64 jsonrpc库的未定义符号

时间:2016-09-05 12:42:30

标签: c++ json qt build symbols

我有一些使用jsonRpc库编译QT应用程序的困难:
  - libjson-rpc-cpp
  - jsoncpp
编译时,我有这个错误:

Undefined symbols for architecture x86_64:
Json::Value::operator=(Json::Value const&)", referenced from:
  jsonrpc::RpcProtocolServerV1::WrapException(Json::Value const&, jsonrpc::JsonRpcException const&, Json::Value&) in libjson-rpc-cpp.a(rpcprotocolserverv1.o)
  jsonrpc::RpcProtocolServerV1::WrapResult(Json::Value const&, Json::Value&, Json::Value&) in libjson-rpc-cpp.a(rpcprotocolserverv1.o)
  jsonrpc::RpcProtocolServerV1::WrapError(Json::Value const&, int, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, Json::Value&) in libjson-rpc-cpp.a(rpcprotocolserverv1.o)
  jsonrpc::RpcProtocolServerV2::WrapException(Json::Value const&, jsonrpc::JsonRpcException const&, Json::Value&) in libjson-rpc-cpp.a(rpcprotocolserverv2.o)
  jsonrpc::RpcProtocolServerV2::WrapResult(Json::Value const&, Json::Value&, Json::Value&) in libjson-rpc-cpp.a(rpcprotocolserverv2.o)
  jsonrpc::RpcProtocolServerV2::WrapError(Json::Value const&, int, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, Json::Value&) in libjson-rpc-cpp.a(rpcprotocolserverv2.o)
  jsonrpc::AbstractProtocolHandler::ProcessRequest(Json::Value const&, Json::Value&) in libjson-rpc-cpp.a(abstractprotocolhandler.o)
  ...

我尝试在value.h中找到overload =运算符的定义,我发现:

Value& operator=(Value other);

这可能与链接器问题有关,但我真的不知道如何解决它..
有人可以帮我一点吗? 谢谢

2 个答案:

答案 0 :(得分:0)

实际上,libjson-rpc-cpp.a的版本是使用非更新的jsoncpp库来编译的。所以我重新生成了一个更新的libjson-rpc-cpp.a,现在它可以正常工作。

答案 1 :(得分:0)

编译OSVR时遇到了同样的错误。问题的根源是/ usr / local / include中过时的jsoncpp标头。

对我有用的是什么:

  • 从/ usr / local / lib,/ usr / local / include
  • 中删除jsoncpp
  • 从/ usr / local / lib,/ usr / local / include
  • 删除libjson-rpc-cpp

从github源代码构建并安装jsoncpp,包括动态库:

  • git clone --recursive https://github.com/VRPN/jsoncpp
  • git clone --recursive https://github.com/cinemast/libjson-rpc-cpp.git
  • cd jsoncpp
  • cmake -DCMAKE_BUILD_TYPE = debug -DBUILD_STATIC_LIBS = ON -DBUILD_SHARED_LIBS = ON -DARCHIVE_INSTALL_DIR =。 -G“Unix Makefiles”。
  • 使
  • make install
  • cd ../ libjson-rpc-cpp
  • cmake -DCMAKE_BUILD_TYPE = debug -DBUILD_STATIC_LIBS = ON -DBUILD_SHARED_LIBS = ON -DARCHIVE_INSTALL_DIR =。 -G“Unix Makefiles”。
  • 使
  • make install