C ++ MsgPack: ошибки компоновщика

Я пытаюсь скомпилировать пример кода пакета сообщений (http://msgpack.org/) и все время получаю следующие ошибки, в которых я не могу разобраться:

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

 ./ src / MsgPack2.  o: В функции `main ':
 /mnt/eoh/workspace/MsgPack2/Debug/../src/MsgPack2.cpp:38:
 

неопределенная ссылка на msgpack :: rpc :: server :: listen (std :: basic_string , std :: allocator > const &, беззнаковый короткая)' ./src/MsgPack2.o: В функции loop ': /usr/local/include/msgpack/rpc/loop.h:30: неопределенная ссылка на mp :: wavy :: loop :: loop () ' ./src/MsgPack2.o: В функции base ': /usr/local/include/msgpack/rpc/server.h:59: неопределенная ссылка на msgpack :: rpc :: server :: server (msgpack :: rpc :: loop) ' /usr/local/include/msgpack/rpc/server.h:59: неопределенная ссылка на msgpack :: rpc :: server :: serve (msgpack :: rpc :: dispatcher *) ' /usr/local/include/msgpack/rpc/server.h:59: неопределенная ссылка на msgpack :: rpc :: server :: ~ server () ' ./src/MsgPack2.o: В функции ~ base ': /usr/local/include/msgpack/rpc/server.h:64: неопределенная ссылка на msgpack :: rpc :: server :: ~ server () ' ./src/MsgPack2.o: В функции myserver :: dispatch (msgpack :: rpc :: request) ': /mnt/eoh/workspace/MsgPack2/Debug/../src/MsgPack2.cpp:14: неопределенная ссылка на msgpack :: rpc :: request :: method () ' /mnt/eoh/workspace/MsgPack2/Debug/../src/MsgPack2.cpp:18: неопределенная ссылка на msgpack :: rpc :: request :: params () ' ./src/MsgPack2.o: В функции msgpack :: rpc :: loop_util :: run (без знака длинная)': /usr/local/include/msgpack/rpc/loop_util.h:34: неопределенная ссылка to msgpack :: rpc :: session_pool :: get_loop () ' /usr/local/include/msgpack/rpc/loop_util.h:34: неопределенная ссылка to mp :: wavy :: loop :: run (unsigned long) ' ./src/MsgPack2.o: В функции void msgpack :: rpc :: request :: call (int &, msgpack :: type :: nil &) ': /usr/local/include/msgpack/rpc/request.h:119: неопределенная ссылка to msgpack :: rpc :: request :: is_sent () const ' /usr/local/include/msgpack/rpc/request.h:122: неопределенная ссылка к msgpack :: rpc :: request :: get_msgid ()const ' /usr/local/include/msgpack/rpc/request.h:125: неопределенная ссылка к msgpack :: 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: неопределенная ссылка to msgpack :: rpc :: request :: is_sent () const ' /usr/local/include/msgpack/rpc/request.h:122: неопределенная ссылка to msgpack :: rpc :: request :: get_msgid () const ' /usr/local/include/msgpack/rpc/request.h:125: неопределенная ссылка to msgpack :: rpc :: request :: send_data (msgpack :: sbuffer *) ' ./src/MsgPack2.o: В функции void msgpack :: rpc :: request :: call, std :: allocator>

(msgpack :: type :: nil &, std :: basic_string, std :: allocator> &) ': /usr/local/include/msgpack/rpc/request.h:119: неопределенная ссылка to msgpack :: rpc :: request :: is_sent () const ' /usr/local/include/msgpack/rpc/request.h:122: неопределенная ссылка 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: В функции __ shared_count ': /usr/include/c++/4.5/tr1/shared_ptr.h:121: неопределенная ссылка на mp :: wavy :: loop :: ~ loop () ' ./src/MsgPack2.o: В функции 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

А вот код:

#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;
}

Если у кого-то есть идеи, мы будем очень признательны.

Заранее большое спасибо,

5
задан Eamorr 11 August 2011 в 11:07
поделиться