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 amp::wavy::loop::loop()' ./src/MsgPack2.o: In function
de base': /usr/local/include/msgpack/rpc/server.h: 59: referencia no definida amsgpack::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 amsgpack::rpc::server::~server()' ./src/MsgPack2.o: In function
~ base' : /usr/local/include/msgpack/rpc/server.h:64: referencia indefinida amsgpack::rpc::server::~server()' ./src/MsgPack2.o: In function
myserver :: dispatch (msgpack :: rpc :: request) ': /mnt/eoh/workspace/MsgPack2/Debug /../src/MsgPack2.cpp:14: referencia indefinida amsgpack::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ónmsgpack::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 amsgpack::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 amsgpack::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 amsgpack::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 amsgpack::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 amsgpack::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 amp::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(¶ms);
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,
Sí, tienes razón! ¡¡¡Muchas gracias!!! Nunca encontré una referencia a -lmsgpack-rpc en la documentación. – Eamorr