体系结构的未定义符号 x86_64 jsonrpc 库
Undefined symbols for architecture x86_64 jsonrpc library
我在使用 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);
这可能与链接器问题有关,但我真的不知道如何解决它..
谁能给我一些帮助吗?
谢谢
事实上,libjson-rpc-cpp.a 的版本是使用 jsoncpp 库的非更新源编译的。所以我重新生成了一个 libjson-rpc-cpp.a 更新,现在它可以工作了。
我在编译OSVR时遇到了同样的错误。问题的根源是 /usr/local/include.
中过时的 jsoncpp headers
对我有用的:
- 从 /usr/local/lib、/usr/local/include
中删除 jsoncpp
- 从 /usr/local/lib、/usr/local/include
中删除 libjson-rpc-cpp
从 github 源构建并安装 jsoncpp,包括动态库:
- git 克隆 --递归 https://github.com/VRPN/jsoncpp
- git 克隆 --递归 https://github.com/cinemast/libjson-rpc-cpp.git
- cd jsoncpp
- cmake -DCMAKE_BUILD_TYPE=调试-DBUILD_STATIC_LIBS=ON -DBUILD_SHARED_LIBS=ON -DARCHIVE_INSTALL_DIR=。 -G "Unix Makefiles" .
- 制作
- 进行安装
- cd ../libjson-rpc-cpp
- cmake -DCMAKE_BUILD_TYPE=调试-DBUILD_STATIC_LIBS=ON -DBUILD_SHARED_LIBS=ON -DARCHIVE_INSTALL_DIR=。 -G "Unix Makefiles" .
- 制作
- 进行安装
我在使用 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);
这可能与链接器问题有关,但我真的不知道如何解决它..
谁能给我一些帮助吗?
谢谢
事实上,libjson-rpc-cpp.a 的版本是使用 jsoncpp 库的非更新源编译的。所以我重新生成了一个 libjson-rpc-cpp.a 更新,现在它可以工作了。
我在编译OSVR时遇到了同样的错误。问题的根源是 /usr/local/include.
中过时的 jsoncpp headers对我有用的:
- 从 /usr/local/lib、/usr/local/include 中删除 jsoncpp
- 从 /usr/local/lib、/usr/local/include 中删除 libjson-rpc-cpp
从 github 源构建并安装 jsoncpp,包括动态库:
- git 克隆 --递归 https://github.com/VRPN/jsoncpp
- git 克隆 --递归 https://github.com/cinemast/libjson-rpc-cpp.git
- cd jsoncpp
- cmake -DCMAKE_BUILD_TYPE=调试-DBUILD_STATIC_LIBS=ON -DBUILD_SHARED_LIBS=ON -DARCHIVE_INSTALL_DIR=。 -G "Unix Makefiles" .
- 制作
- 进行安装
- cd ../libjson-rpc-cpp
- cmake -DCMAKE_BUILD_TYPE=调试-DBUILD_STATIC_LIBS=ON -DBUILD_SHARED_LIBS=ON -DARCHIVE_INSTALL_DIR=。 -G "Unix Makefiles" .
- 制作
- 进行安装