0

sudo apt-get install libboost-all-dev最新バージョンのUbuntuにBoost viaをインストールしました。ここで、リンクする必要がBoost.Serializationあるライブラリを使用するプロジェクトをコンパイルしたいと思います。

次の多くのバリエーションを試しましたが、成功しませんでした。

gcc -I /usr/lib code.cpp -o compiled /usr/lib/libboost_serialization.a

gcc -I /usr/lib code.cpp -o compiled -l libboost_serialization

エラーメッセージは次のとおりです。

error: ‘split_member’ is not a member of ‘boost::serialization

`

私は何が欠けていますか?

4

2 に答える 2

1

リンクではなく、コードのコンパイルに問題があります。その段階では、ライブラリとは何の関係もありません。その時点で、何かにリンクしなければならないという事実は関係ありません。

直接的または間接的にインクルードしていることを確認し、boost/serialization/split_member.hpp最初にコードをコンパイルしてください。

ちなみに、-Iフラグは、ライブラリではなくファイルを含めるパスを指定するために使用されます。ライブラリの場合は、 を使用します-L。ただし、apt から Boost をインストールした場合は、すでにパスにあるはずなので、追加の-Ior-Lは必要ありません。また、 を指定する-l場合は、ライブラリ名の先頭から発行libし、フラグとその引数の間にスペースを入れないでください。動作するコードを想定すると、次のようになります。

g++ code.cpp -o compiled -lboost_serialization

また、フラグを渡し-Wallてコンパイラをより冗長にし、コードの誤りの可能性について警告することをお勧めします。

于 2012-06-20T21:19:36.653 に答える
0

分割メンバーは、ブーストがシリアル化と逆シリアル化の分割呼び出しがあると想定しているコンパイルの問題です。

http://www.ocaudert.com/blog/2011/07/09/a-practical-guide-to-c-serialization/

于 2012-06-20T21:23:32.190 に答える