【问题标题】:Undefined symbols for architecture x86_64 jsonrpc library架构 x86_64 jsonrpc 库的未定义符号
【发布时间】:2016-09-05 12:42:29
【问题描述】:

我在使用 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 中找到重载 = 运算符的定义,然后发现:

Value& operator=(Value other);

这可能与链接器问题有关,但我真的不知道如何解决它..
谁能给我一些帮助? 谢谢

【问题讨论】:

    标签: c++ json qt build symbols


    【解决方案1】:

    我在编译 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" 。
    • 制作
    • 进行安装
    • cd ../libjson-rpc-cpp
    • cmake -DCMAKE_BUILD_TYPE=debug -DBUILD_STATIC_LIBS=ON -DBUILD_SHARED_LIBS=ON -DARCHIVE_INSTALL_DIR=。 -G "Unix Makefiles" 。
    • 制作
    • 进行安装

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-08-07
        • 2012-07-20
        • 1970-01-01
        • 2015-06-18
        • 2015-10-11
        • 1970-01-01
        • 2015-08-23
        • 2014-05-27
        相关资源
        最近更新 更多