首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >C++ MsgPack:链接器错误

C++ MsgPack:链接器错误
EN

Stack Overflow用户
提问于 2011-08-11 11:07:21
回答 1查看 1.7K关注 0票数 5

我正在尝试编译message (http://msgpack.org/)示例代码,并继续获取这些错误,而这些错误是我无法理解的:

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

/src/msgPack2.o:在函数main': /mnt/eoh/workspace/MsgPack2/Debug/../src/MsgPack2.cpp:38: undefined reference tomsgpack::rpc::server::listen(std::basicstring

&,‘./src/MsgPack2.o: In functionloop': /usr/local/include/msgpack/rpc/loop.h:30: undefined reference tomp::wavy::loop::loop()’./src/MsgPack2.o: In functionbase': /usr/local/include/msgpack/rpc/server.h:59: undefined reference tomsgpack::rpc::server::server(msgpack::rpc::loop)‘/usr/local/functionbase': /usr/local/include/msgpack/rpc/server.h:59: undefined reference tomsgpack::rpc::server::server(msgpack::rpc::loop)’/msgpack/rpc/server.h:59:未定义引用tomsgpack::rpc::server::serve(msgpack::rpc::dispatcher\*)' /usr/local/include/msgpack/rpc/server.h:59: undefined reference tomsgpack::rpc::server::~server()‘./src/MsgPack2.o: In functionD7<‘./src/MsgPack2.o: In functionmyserver::dispatch(msgpack::rpc::request)': /mnt/eoh/workspace/MsgPack2/Debug/../src/MsgPack2.cpp:14: undefined reference tomsgpack::rpc::request::method()’/mnt/eoh/workspace/MsgPack2/Debug/../src/MsgPack2.cpp:18:未定义的引用tomsgpack::rpc::request::params()' ./src/MsgPack2.o: In functionmsgpack::rpc::loop_util::run(unsigned long):/usr/tomsgpack::rpc::request::params()' ./src/MsgPack2.o: In functionmsgpack::rpc::loop_util::run(unsigned/include/msgpack/rpc/loop_util.h:34:未定义引用tomsgpack::rpc::session\_pool::get\_loop()' /usr/local/include/msgpack/rpc/loop\_util.h:34: undefined reference tomp::wavy::loop::run(unsigned long) ./src/MsgPack2.o: In functionvoid msgpack::rpc::request::call(int&, msgpack::type::nil&)': /usr/local/include/msgpack/rpc/request.h:119: undefined reference tomsgpack::rpc::request::is_sent() const‘/usr/functionvoid msgpack::rpc::request::call(int&, msgpack::type::nil&)': /usr/local/include/msgpack/rpc/request.h:119: undefined reference tomsgpack::rpc::request::is_sent()/functionvoid msgpack::rpc::request::call(int&, msgpack::type::nil&)': /usr/local/include/msgpack/rpc/request.h:119: undefined reference tomsgpack::rpc::request::is_sent()/msgpack/rpc/request.h:122:未定义引用tomsgpack::rpc::request::get\_msgid() const' /usr/local/include/msgpack/rpc/request.h:125: undefined reference tomsgpack::rpc::request::send_data(msgpack::sbuffer)’./src/MsgPack2.o:函数void msgpack::rpc::request::call(msgpack::type::nil&, unsigned char&)': /usr/local/include/msgpack/rpc/request.h:119: undefined reference tomsgpack::rpc:() const‘/usr/local/include/msgpack/rpc/request.h:122:未定义的引用tomsgpack::rpc::request::get\_msgid() const' /usr/local/include/msgpack/rpc/request.h:125: undefined reference tomsgpack::rpc::request::send_data(msgpack::sbuffer)’./src/MsgPack2.o: In functionvoid msgpack::rpc::request::call, std::allocator > (msgpack::type::nil&, std::basic\_string, std::allocator >&)': /usr/local/include/msgpack/rpc/request.h:119: undefined reference tomsgpack::rpc::request::is_sent() const‘/usr/functionvoid msgpack::rpc::request::call, std::allocator > (msgpack::type::nil&, std::basic\_string, std::allocator >&)': /usr/local/include/msgpack/rpc/request.h:119: undefined reference tomsgpack::rpc::request::is_sent()/include/msgpack/rpc/request.h:122:未定义的对msgpack::rpc::request::get\_msgid() const' /usr/local/include/msgpack/rpc/request.h:125: undefined reference tomsgpack的引用::rpc:/src/msgPack2.o:在function\_\_shared\_count': /usr/include/c++/4.5/tr1/shared\_ptr.h:121: undefined reference tomp::wavy::loop::~loop()‘./src/MsgPack2.o:在functionstd::tr1::\_Sp\_deleter::operator()(mp::wavy::loop\*) const': /usr/include/c++/4.5/tr1/shared\_ptr.h:99: undefined reference tomp::wavy::loop::~loop()’中,collect2: ld返回一个退出状态:*_ MsgPack2 Error 1

这是密码:

代码语言:javascript
复制
#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;
}

如果有人有任何想法,我们将不胜感激。

事先非常感谢,

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-08-11 11:31:04

你需要-lmsgpack-rpc

附带注意:80800不是一个有效的端口。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7024773

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档