Я пытаюсь скомпилировать пример кода пакета сообщений (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
loop ': /usr/local/include/msgpack/rpc/loop.h:30: неопределенная ссылка на, std :: allocator > const &, беззнаковый короткая)' ./src/MsgPack2.o: В функции 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
msgpack :: rpc :: session_pool :: get_loop () ' /usr/local/include/msgpack/rpc/loop_util.h:34: неопределенная ссылка to:: run (без знака длинная)': /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: неопределенная ссылка tomsgpack :: 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: неопределенная ссылка tomsgpack :: 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: неопределенная ссылка tomsgpack :: 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(¶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;
}
Если у кого-то есть идеи, мы будем очень признательны.
Заранее большое спасибо,