【发布时间】:2016-04-16 23:07:30
【问题描述】:
我有这个最小的单元测试:
#include <boost/test/unit_test.hpp>
#define BOOST_TEST_MODULE a_test
struct Color{};
BOOST_AUTO_TEST_CASE(color_test)
{
BOOST_CHECK(std::is_pod<Color>());
}
但是当我像这样编译它时
clang -std=c++14 -lc++ -lboost_unit_test_framework a_test.cc -o main
我得到 _main 的未定义符号。 -lboost_unit_test_framework 使用共享库。
我以前使用过这个库,我记得自己不必声明 main 函数,因为它会自动运行我定义的几个 BOOST_AUTO_TEST_CASEs。
我做错了什么?
【问题讨论】:
-
BOOST_TEST_MODULE定义在包含之前。 Boost 检测到它,然后为你生成一个 main 函数。 -
@melak47 不幸的是,这也不起作用
-
啊,你也错过了
libboost_test_exec_monitor.a! :) -
另外,等一下——如果你想使用共享库,我相信你必须
#define BOOST_TEST_DYN_LINK。没有它,它假定静态库。 -
就是这样!我不明白程序如何决定是使用静态库还是共享库,这不是链接器的工作吗?无论如何,如果您将其发布为答案,我会接受。
标签: c++ unit-testing boost