简体   繁体   English

C++ MsgPack: linker 错误

[英]C++ MsgPack: linker errors

I'm trying to compile the message pack (http://msgpack.org/) example code and keep getting these errors which I can't get to the bottom of:我正在尝试编译消息包(http://msgpack.org/)示例代码并不断收到这些我无法深入了解的错误:

g++ -o"MsgPack2"./src/MsgPack2.o -lmsgpack -lmsgpackc

 ./src/MsgPack2.o: In function `main': /mnt/eoh/workspace/MsgPack2/Debug/../src/MsgPack2.cpp:38:

undefined reference to msgpack::rpc::server::listen(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, unsigned short)'./src/MsgPack2.o: In function loop': /usr/local/include/msgpack/rpc/loop.h:30: undefined reference to mp::wavy::loop::loop()'./src/MsgPack2.o: In function base': /usr/local/include/msgpack/rpc/server.h:59: undefined reference to msgpack::rpc::server::server(msgpack::rpc::loop)' /usr/local/include/msgpack/rpc/server.h:59: undefined reference to msgpack::rpc::server::serve(msgpack::rpc::dispatcher*)' /usr/local/include/msgpack/rpc/server.h:59: undefined reference to msgpack::rpc::server::~server()'./src/MsgPack2.o: In function ~base': /usr/local/include/msgpack/rpc/server.h:64: undefined reference to msgpack::rpc::server::~server()'./src/MsgPack2.o: In function myserver::dispatch(msgpack::rpc::request)': /mnt/eoh/workspace/MsgPack2/Debug/../msgpack::rpc::server::listen(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, unsigned short)'./src/MsgPack2.o: In function loop': /usr/local/include/msgpack/rpc/loop.h:30: 未定义对mp::wavy::loop::loop()'./src/MsgPack2.o: In function基础': /usr/local/include/msgpack/rpc/server.h:59: 未定义对msgpack::rpc::server::server(msgpack::rpc::loop)' /usr/local/include/msgpack/rpc/server.h:59: undefined reference to msgpack::rpc::server::serve(msgpack::rpc::dispatcher*)' 的引用 /usr/local/include/msgpack/rpc/server.h:59:对msgpack::rpc::server::~server()'./src/MsgPack2.o: In function ~base':/usr/local/include/msgpack/rpc/server.h:64:未定义引用到msgpack::rpc::server::~server()'./src/MsgPack2.o: In function myserver::dispatch(msgpack::rpc::request)': /mnt/eoh/workspace/MsgPack2/Debug /../ src/MsgPack2.cpp:14: undefined reference to msgpack::rpc::request::method()' /mnt/eoh/workspace/MsgPack2/Debug/../src/MsgPack2.cpp:18: undefined reference to msgpack::rpc::request::params()'./src/MsgPack2.o: In function msgpack::rpc::loop_util<msgpack::rpc::session_pool>::run(unsigned long)': /usr/local/include/msgpack/rpc/loop_util.h:34: undefined reference to msgpack::rpc::session_pool::get_loop()' /usr/local/include/msgpack/rpc/loop_util.h:34: undefined reference to mp::wavy::loop::run(unsigned long)'./src/MsgPack2.o: In function void msgpack::rpc::request::call(int&, msgpack::type::nil&)': /usr/local/include/msgpack/rpc/request.h:119: undefined reference to msgpack::rpc::request::is_sent() const' /usr/local/include/msgpack/rpc/request.h:122: undefined reference to msgpack::rpc::request::get_msgid() const' /usr/local/include/msgpack/rpc/request.h:125: undefined reference to msgpack::rpc::request::send_data(msgpack::sbuffer*)'./src/MsgPack2.o: In function src/MsgPack2.cpp:14: 未定义对msgpack::rpc::request::method()' /mnt/eoh/workspace/MsgPack2/Debug/../src/MsgPack2.cpp:18: undefined reference to msgpack 的引用::rpc::request::params()'./src/MsgPack2.o: 在 function msgpack::rpc::loop_util<msgpack::rpc::session_pool>::run(unsigned long)': /usr/local/include/msgpack/rpc/loop_util.h:34: undefined reference to msgpack::rpc::session_pool::get_loop()' 的引用 /usr/local/include/msgpack/rpc/loop_util.h:34: 未定义引用mp::wavy::loop::run(unsigned long)'./src/MsgPack2.o: In function void msgpack::rpc::request::call(int&, msgpack::type::nil&)': / usr/local/include/msgpack/rpc/request.h:119: 未定义对msgpack::rpc::request::is_sent() const' /usr/local/include/msgpack/rpc/request.h:122: undefined reference to msgpack::rpc::request::get_msgid() 的引用 const' /usr/local/include/msgpack/rpc/request.h:125: 未定义对msgpack::rpc::request::send_data(msgpack::sbuffer*)'./src/MsgPack2.o: In function msgpack::rpc::request::send_data(msgpack::sbuffer*)'./src/MsgPack2.o: In function void msgpack::rpc::request::call(msgpack::type::nil&, unsigned char&)': /usr/local/include/msgpack/rpc/request.h:119: undefined reference to msgpack::rpc::request::is_sent() const' /usr/local/include/msgpack/rpc/request.h:122: undefined reference to msgpack::rpc::request::get_msgid() const' /usr/local/include/msgpack/rpc/request.h:125: undefined reference to msgpack::rpc::request::send_data(msgpack::sbuffer*)'./src/MsgPack2.o: In function void msgpack::rpc::request::call, std::allocator > msgpack::rpc::request::send_data(msgpack::sbuffer*)'./src/MsgPack2.o: In function无效 msgpack::rpc::request::call(msgpack::type::nil&, unsigned char&)': /usr/local/include/msgpack/rpc/request.h:119: 未定义引用到msgpack::rpc::request::is_sent() const' /usr/local/include/msgpack/rpc/request.h:122: undefined reference to msgpack::rpc::request::get_msgid() const' 的引用usr/local/include/msgpack/rpc/request.h:125:未定义对msgpack::rpc::request::send_data(msgpack::sbuffer*)'./src/MsgPack2.o: In function无效 msgpack: :rpc::request::call, std::allocator >

(msgpack::type::nil&, std::basic_string, std::allocator >&)': /usr/local/include/msgpack/rpc/request.h:119: undefined reference to msgpack::rpc::request::is_sent() const' /usr/local/include/msgpack/rpc/request.h:122: undefined reference to msgpack::rpc::request::get_msgid() const' /usr/local/include/msgpack/rpc/request.h:125: undefined reference to msgpack::rpc::request::send_data(msgpack::sbuffer*)'./src/MsgPack2.o: In function __shared_count': /usr/include/c++/4.5/tr1/shared_ptr.h:121: undefined reference to mp::wavy::loop::~loop()'./src/MsgPack2.o: In function std::tr1::_Sp_deleter::operator()(mp::wavy::loop*) const': /usr/include/c++/4.5/tr1/shared_ptr.h:99: undefined reference to `mp::wavy::loop::~loop()' collect2: ld returned 1 exit status make: * [MsgPack2] Error 1 (msgpack::type::nil&, std::basic_string, std::allocator >&)': /usr/local/include/msgpack/rpc/request.h:119: 未定义对msgpack::rpc::request::is_sent() const' /usr/local/include/msgpack/rpc/request.h:122: undefined reference to的引用msgpack::rpc::request::is_sent() const' /usr/local/include/msgpack/rpc/request.h:122: undefined reference to msgpack::rpc::request::get_msgid() 的引用 const' /usr/local/include/msgpack/ rpc/request.h:125: 未定义对msgpack::rpc::request::send_data(msgpack::sbuffer*)'./src/MsgPack2.o: In function __shared_count': /usr/include/c++/4.5 /tr1/shared_ptr.h:121: 未定义对mp::wavy::loop::~loop()'./src/MsgPack2.o: In function std::tr1::_Sp_deleter::operator()(mp ::wavy::loop*) const': /usr/include/c++/4.5/tr1/shared_ptr.h:99: 未定义对 `mp::wavy::loop::~loop()' 的引用 collect2: ld 返回1 退出状态 make: * [MsgPack2] 错误 1

And here is the code:这是代码:

#include <msgpack/rpc/server.h>

class myserver : public msgpack::rpc::server::base {
public:
    void add(msgpack::rpc::request req, int a1, int a2)
    {
            req.result(a1 + a2);
    }

public:
    void dispatch(msgpack::rpc::request req)
    try {
            std::string method;
            req.method().convert(&method);

            if(method == "add") {
                    msgpack::type::tuple<int, int> params;
                    req.params().convert(&params);
                    add(req, params.get<0>(), params.get<1>());

            } else {
                    req.error(msgpack::rpc::NO_METHOD_ERROR);
            }

    } catch (msgpack::type_error& e) {
            req.error(msgpack::rpc::ARGUMENT_ERROR);
            return;

    } catch (std::exception& e) {
            req.error(std::string(e.what()));
            return;
    }
};

int main(void)
{
    myserver svr;
    svr.instance.listen("127.0.0.1", 80800);
    svr.instance.run(4);  // run 4 threads

    return 0;
}

If anyone has any ideas, it would be greatly appreciated.如果有人有任何想法,将不胜感激。

Many thanks in advance,提前谢谢了,

You need -lmsgpack-rpc .你需要-lmsgpack-rpc

[Side note: 80800 is not a valid port.] [旁注: 80800不是有效端口。]

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM