5

メッセージ パック (http://msgpack.org/) のサンプル コードをコンパイルしようとしていますが、これらのエラーが発生し続けます。

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

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

msgpack::rpc::server::listen(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, unsigned short)' ./src/MsgPack2.o: In functionループ への未定義の参照': mp::wavy::loop::loop()' ./src/MsgPack2.o: In function/usr/local/include/msgpack/rpc/loop.h:30: ベース への未定義の参照': /usr/local/include/msgpack/rpc/server.h:59: msgpack::rpc::server::server(msgpack::rpc::loop)' /usr/local/include/msgpack/rpc/server.h:59: undefined reference to msgpackへの未定義の参照::rpc::server::serve(msgpack::rpc::dispatcher*)' /usr/local/include/msgpack/rpc/server.h:59: msgpack::rpc::server::~server()' ./src/MsgPack2.o: In function~base への未定義参照': /usr/local/include /msgpack/rpc/server.h:64: msgpack::rpc::server::~server()' ./src/MsgPack2.o: In function 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: undefined reference tomsgpack::rpc::request::params()' への未定義の参照./src/MsgPack2.o: 関数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: への未定義の参照mp::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: msgpack::rpc::request::is_sent() const' /usr/local/include/msgpack/rpc/request.h:122: undefined reference tomsgpack::rpc への未定義の参照:: request::get_msgid() const' /usr/local/include/msgpack/rpc/request.h:125: msgpack::rpc::request::send_data(msgpack::sbuffer*)' ./src/MsgPack2.o: In functionvoid msgpack::rpc::request::call(msgpack::type::nil&, unsigned char&への未定義参照)': /usr/local/include/msgpack/rpc/request.h:119: msgpack::rpc::request::is_sent() const' /usr/local/include/msgpack/rpc/request.h:122: undefined reference tomsgpack::rpc::request::get_msgid() への未定義の参照 const' /usr/local/include/msgpack/rpc/request. h:125: msgpack::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: msgpack::rpc::request::is_sent() const' /usr/local/include/msgpack/rpc/request.h:122: undefined reference tomsgpack::rpc::requestへの未定義の参照::get_msgid() const' /usr/local/include/msgpack/rpc/request.h:125: msgpack::rpc::request::send_data(msgpack::sbuffer*)' ./src/MsgPack2.o: In function__shared_count への未定義の参照': /usr/include/c++/4.5/tr1/shared_ptr.h:121: への未定義の参照 mp::wavy::loop::~loop()' ./src/MsgPack2.o: In function 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;
}

誰かに何かアイデアがあれば、それは大歓迎です。

よろしくお願いします。

4

1 に答える 1

4

が必要-lmsgpack-rpcです。

[補足:80800は有効なポートではありません。]

于 2011-08-11T11:31:04.397 に答える