Boost计时器无法编译

时间:2012-04-06 13:56:11

标签: c++ boost timer

我正在尝试编译boost计时器,它正在抛出我不明白的错误。这让我觉得计时器库已经崩溃了:

#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

这是否意味着计时器库已被破坏?我正在使用Boost 1.49.0。

谢谢!

4 个答案:

答案 0 :(得分:5)

假设您使用gcc,请尝试将-lboost_system添加到编译器命令行,以便链接到该库。

答案 1 :(得分:2)

这些错误与Boost Timer库无关,不存在,库没有损坏。正如此introductory material指定的那样,

  

Boost.Timer是作为单独编译的库实现的,因此您必须在链接器可以找到的位置安装二进制文件。

...并在调用编译器时将相应的库添加为命令行参数(使用-lLIBNAME),或者在使用IDE,CMake或Makefiles时将它们添加到项目配置中。在发表廉价评论之前,请务必先了解Boost Getting Started guide中讨论的详细信息。

答案 2 :(得分:0)

您还必须包含基本增强系统标题。选中您需要的默认标题的示例之一。

答案 3 :(得分:0)

你忘了链接boost_system。 像这样:

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

会好的