2011-08-11 7 views
5

estoy tratando de compilar el paquete de mensajes (http://msgpack.org/) código de ejemplo y seguir recibiendo estos errores que no puedo llegar a la parte inferior de:C++ MsgPack: errores de enlace

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

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

referencia indefinida a 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: referencia indefinida a mp::wavy::loop::loop()' ./src/MsgPack2.o: In function de base': /usr/local/include/msgpack/rpc/server.h: 59: referencia no definida a msgpack::rpc::server::server(msgpack::rpc::loop)' /usr/local/include/msgpack/rpc/server.h:59: undefined reference to msgpack :: :: RPC del servidor :: servicio (RPC msgpack :: :: despachador *) ' /usr/local/include/msgpack/rpc/server.h:59: referencia indefinida a msgpack::rpc::server::~server()' ./src/MsgPack2.o: In function ~ base' : /usr/local/include/msgpack/rpc/server.h:64: referencia indefinida a msgpack::rpc::server::~server()' ./src/MsgPack2.o: In function myserver :: dispatch (msgpack :: rpc :: request) ': /mnt/eoh/workspace/MsgPack2/Debug /../src/MsgPack2.cpp:14: referencia indefinida a msgpack::rpc::request::method()' /mnt/eoh/workspace/MsgPack2/Debug/../src/MsgPack2.cpp:18: undefined reference to msgpack :: :: RPC petición :: params()' ./src/MsgPack2.o: En función 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: referencia indefinida -mp::wavy::loop::run(unsigned long)' ./src/MsgPack2.o: In function vacío msgpack :: RPC :: :: petición de llamada (int &, msgpack :: :: tipo nula &) ': /usr/local/include/msgpack/rpc/request.h:119: indefinido referencia a msgpack::rpc::request::is_sent() const' /usr/local/include/msgpack/rpc/request.h:122: undefined reference to msgpack :: RPC :: :: petición get_msgid() const' /usr/local/include/msgpack/rpc/request.h:125: referencia indefinida a msgpack::rpc::request::send_data(msgpack::sbuffer*)' ./src/MsgPack2.o: In function vacío msgpack :: :: RPC petición :: llamada (msgpack :: :: tipo nula &, & unsigned char) ': /usr/local/include/msgpack/rpc/request.h:119: referencia indefinida a msgpack::rpc::request::is_sent() const' /usr/local/include/msgpack/rpc/request.h:122: undefined reference to msgpack :: :: RPC solicitud: : get_msgid() const ' /usr/local/include/msgpack/rpc/request.h:125: referencia indefinida a msgpack::rpc::request::send_data(msgpack::sbuffer*)' ./src/MsgPack2.o: In function vacío msgpack :: RPC :: :: solicitud de llamada, std :: asignador>

(msgpack: : tipo :: nula &, std :: basic_string, std :: asignador> &) ': /usr/local/include/msgpack/rpc/request.h:119: referencia indefinida a msgpack::rpc::request::is_sent() const' /usr/local/include/msgpack/rpc/request.h:122: undefined reference to msgpack :: RPC: : solicitud :: get_msgid() const ' /usr/local/include/msgpack/rpc/request.h:125: referencia indefinida a msgpack::rpc::request::send_data(msgpack::sbuffer*)' ./src/MsgPack2.o: In function __shared_count': /usr/inclu de/C++/4.5/tr1/shared_ptr.h: 121: referencia no definida a mp::wavy::loop::~loop()' ./src/MsgPack2.o: In function std :: tr1 :: _ Sp_deleter :: operator() (mp :: ondulado :: bucle *) const ': /usr/include /c++/4.5/tr1/shared_ptr.h: 99: referencia indefinida a `mp :: ondulado :: bucle :: ~ loop()' collect2: ld volvió 1 estado de salida make: * [MsgPack2] Error 1

Y aquí está el código:

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

Si alguien tiene alguna idea, sería muy apreciada.

Muchas gracias de antemano,

Respuesta

4

Se necesitan -lmsgpack-rpc.

[Nota al margen: 80800 no es un puerto válido.]

+0

Sí, tienes razón! ¡¡¡Muchas gracias!!! Nunca encontré una referencia a -lmsgpack-rpc en la documentación. – Eamorr

Cuestiones relacionadas