2011-08-11 13 views
5

私はメッセージパック(http://msgpack.org/)サンプルコードをコンパイルして、私はの底に取得することはできませんこれらのエラーを得続けるためにしようとしている:C++ MsgPack:リンカエラー

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に ' /usr/local/include/msgpack/rpc/loop.h:30:未定義の参照基地mp::wavy::loop::loop()' ./src/MsgPack2.o: In function に' は/ usr /含む/ローカル/ msgpack/rpc/server.h:59:未定義のリファレンス(msgpack :: rpc :: dispatcher *) ' msgpack::rpc::server::server(msgpack::rpc::loop)' /usr/local/include/msgpack/rpc/server.h:59: undefined reference to 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 to msgpack :: 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 functionへのボイド msgpack :: RPC ::要求::コール(&、 msgpack ::タイプ:: & nilをint型) ': /usr/local/include/msgpack/rpc/request.h:119:未定義 msgpack::rpc::request::is_sent() const' /usr/local/include/msgpack/rpc/request.h:122: undefined reference toにmsgpackを参照:: RPC ::要求:: get_msgid()constは」 /usr/local/include/msgpack/rpc/request.h:125:未定義の参照 msgpack::rpc::request::send_data(msgpack::sbuffer*)' ./src/MsgPack2.o: In functionへのボイド msgpack :: RPC ::要求:: 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 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: In functionへのボイド msgpack :: RPC ::要求::コール、STD ::アロケータ>

(msgpack: :タイプ:: &ニル、STD ::のbasic_string、 のstd ::アロケータ> &) ': /usr/local/include/msgpack/rpc/request.h:119:未定義参照 msgpack::rpc::request::is_sent() const' /usr/local/include/msgpack/rpc/request.h:122: undefined reference 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: In function __shared_count': /usr/inclump::wavy::loop::~loop()' ./src/MsgPack2.o: In function std :: tr1 :: _ Sp_deleter :: operator()(mp :: wavy :: loop *) const ': /usr/includeのように定義されていない参照を、de/C++/4.5/tr1/shared_ptr.h: /c++/4.5/tr1/shared_ptr。時間:99: `MPに未定義の参照::波状::ループ::〜ループ()」 collect2は:*は[MsgPack2]エラー1

:ldは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; 
} 

誰にでもアイデアがあれば、大歓迎です。あなたが-lmsgpack-rpcを必要とし、事前に

多くのおかげで、

答えて

4

[サイドノート:。80800が有効なポートではありません]

+0

はい、あなたはとても正しいです!どうもありがとうございます!!!ドキュメントに-lmsgpack-rpcのリファレンスが見つかりませんでした。 – Eamorr