我正在尝试编译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。
谢谢!
答案 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
会好的