-3

我正在尝试编译升压计时器,但它抛出了我不明白的错误。这让我觉得定时器库坏了 atm:

#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

4 回答 4

5

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

于 2012-04-06T14:02:13.420 回答
2

这些错误与 Boost Timer 库无关,不,库没有损坏。正如本介绍材料所指定的,

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

...并在调用编译器时将相应的库添加为命令行参数(使用-lLIBNAME),或者在使用 IDE、CMake 或 Makefile 时将它们添加到项目配置中。在发表廉价言论之前,请确保您首先了解Boost 入门指南中讨论的详细信息。

于 2012-04-06T14:23:04.343 回答
0

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

于 2012-04-06T13:59:41.077 回答
0

您忘记链接 boost_system。像这样:

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

会好的

于 2012-04-07T06:01:11.557 回答