-3

ブーストタイマーをコンパイルしようとしていますが、理解できないエラーがスローされます。タイマーライブラリが壊れていると思います:

#include <string>
#include <boost/lexical_cast.hpp>
#include <boost/timer/timer.hpp>

int main(int argc, char **argv) {
//  auto_cpu_timer t;
    std::cout << boost::lexical_cast<std::string>(2.0) << std::endl;

    return 0;
}

timer.hppの#includeがないと、コンパイルされます。これを使用すると、次のエラーがスローされます。

Invoking: GCC C++ Linker
g++ -Lsrc -o "timetest"  ./src/main.o   
./src/main.o: In function `__static_initialization_and_destruction_0':
/usr/include/boost/system/error_code.hpp:214: undefined reference to `boost::system::generic_category()'
/usr/include/boost/system/error_code.hpp:215: undefined reference to `boost::system::generic_category()'
/usr/include/boost/system/error_code.hpp:216: undefined reference to `boost::system::system_category()'
collect2: ld returned 1 exit status
make: *** [timetest] Error 1

これは、タイマーライブラリがATMで無効になっていることを意味しますか?Boost1.49.0を使用しています。

ありがとう!

4

4 に答える 4

5

gccを使用していると仮定して、そのライブラリにリンクするために、コンパイラのコマンドラインに-lboost_systemを追加してみてください。

于 2012-04-06T14:02:13.420 に答える
2

これらのエラーはブーストタイマーライブラリとは関係がなく、ライブラリは壊れていません。この入門資料で指定されているように、

Boost.Timerは個別にコンパイルされたライブラリとして実装されているため、リンカーが検出できる場所にバイナリをインストールする必要があります。

...コンパイラを呼び出すときに、コマンドライン引数として(を使用して-lLIBNAME)対応するライブラリを追加するか、IDE、CMake、またはMakefileを使用する場合はそれらをプロジェクト構成に追加します。安っぽい発言をする前に、 Boost入門ガイドで説明されている詳細を最初に理解してください。

于 2012-04-06T14:23:04.343 に答える
0

ベースブーストシステムヘッダーも含める必要があります。必要なデフォルトヘッダーの例の1つを確認してください。

于 2012-04-06T13:59:41.077 に答える
0

boost_systemをリンクするのを忘れています。このような:

g++ -Lsrc -o "timetest"  ./src/main.o -lboost_system

うまくいく

于 2012-04-07T06:01:11.557 に答える