makefile.unix:188:obj/magirpc.o编译时出现错误1



当我编译magi钱包(使用本指南(时,我在编译它时遇到了这些错误。在Bing和谷歌上搜索后,我似乎没有找到任何解决方案,只有在实际项目的makefile中提到了这一点。我没有找到任何关于如何解决这个问题的方法,GitHub回购已经有大约3年没有更新了,也没有人回答那里的问题。有人能帮我吗?(以下列出了所有错误,并按它们出现的时间排序(

magirpc.cpp: At global scope:
magirpc.cpp:668:102: error: wrong number of template arguments (2, should be 1)
static void RPCAcceptHandler(boost::shared_ptr< basic_socket_acceptor<Protocol, SocketAcceptorService> > acceptor,
magirpc.cpp:668:104: error: template argument 1 is invalid
static void RPCAcceptHandler(boost::shared_ptr< basic_socket_acceptor<Protocol, SocketAcceptorService> > acceptor,
magirpc.cpp:678:95: error: wrong number of template arguments (2, should be 1)
static void RPCListen(boost::shared_ptr< basic_socket_acceptor<Protocol, SocketAcceptorService> > acceptor,
magirpc.cpp:678:97: error: template argument 1 is invalid
static void RPCListen(boost::shared_ptr< basic_socket_acceptor<Protocol, SocketAcceptorService> > acceptor,
magirpc.cpp:683:91: error: base operand of ‘->’ is not a pointer
AcceptedConnectionImpl<Protocol>* conn = new AcceptedConnectionImpl<Protocol>(acceptor->get_io_service(), context, fUseSSL);
magirpc.cpp:685:13: error: base operand of ‘->’ is not a pointer
acceptor->async_accept(
magirpc.cpp:700:102: error: wrong number of template arguments (2, should be 1)
static void RPCAcceptHandler(boost::shared_ptr< basic_socket_acceptor<Protocol, SocketAcceptorService> > acceptor,
magirpc.cpp:700:104: error: template argument 1 is invalid
static void RPCAcceptHandler(boost::shared_ptr< basic_socket_acceptor<Protocol, SocketAcceptorService> > acceptor,
magirpc.cpp:710:17: error: base operand of ‘->’ is not a pointer
&& acceptor->is_open())
magirpc.cpp:711:45: error: no matching function for call to ‘RPCListen(int&, boost::asio::ssl::context&, const bool&)’
RPCListen(acceptor, context, fUseSSL);
magirpc.cpp:775:58: error: no matching function for call to ‘boost::asio::ssl::context::context(boost::asio::io_service&, boost::asio::ssl::context_base::method)’
ssl::context context(io_service, ssl::context::sslv23);
magirpc.cpp:791:41: error: ‘class boost::asio::ssl::context’ has no member named ‘impl’
SSL_CTX_set_cipher_list(context.impl(), strCiphers.c_str());
magirpc.cpp:816:45: error: no matching function for call to ‘RPCListen(boost::shared_ptr<boost::asio::basic_socket_acceptor<boost::asio::ip::tcp> >&, boost::asio::ssl::context&, const bool&)’
RPCListen(acceptor, context, fUseSSL);
magirpc.cpp:842:49: error: no matching function for call to ‘RPCListen(boost::shared_ptr<boost::asio::basic_socket_acceptor<boost::asio::ip::tcp> >&, boost::asio::ssl::context&, const bool&)’
RPCListen(acceptor, context, fUseSSL);
magirpc.cpp:1085:58: error: no matching function for call to ‘boost::asio::ssl::context::context(boost::asio::io_service&, boost::asio::ssl::context_base::method)’
ssl::context context(io_service, ssl::context::sslv23);
make: *** [makefile.unix:188: obj/magirpc.o] Error 1

注意:有关构建的完整日志,请单击此处。

谢谢,

天鹅嘎嘎

如上所述,在我看来,这段代码想要的Boost版本与您正在使用的版本不同。您正在使用的boost版本需要一个参数作为basic_socket_acceptor的模板,而此代码正试图传递两个参数。

查看Boost文档,我可以看到当前的最新版本确实需要两个参数;看见https://www.boost.org/doc/libs/1_76_0/doc/html/boost_asio/reference/basic_socket_acceptor.html我可以看到,直到1.69版本都需要一个自变量一个自变量的版本;看见https://www.boost.org/doc/libs/1_69_0/doc/html/boost_asio/reference/basic_socket_acceptor.html

该签名似乎在Boost 1.70中发生了更改。

因此,您试图编译的Boost版本似乎太旧了,而这组代码希望您使用更新的版本,因此您需要升级您的Boost。

相关内容

最新更新