Boost.Test - 覆盖 main 时未定义的符号

Boost.Test - Undefined symbol when overriding main

我想在使用 Boost.Test 时提供自己的主要功能。所以我包含了以下宏:

#define BOOST_TEST_ALTERNATIVE_INIT_API
#define BOOST_TEST_NO_MAIN

我的主要功能如下所示:

int main(int argc, char* argv[])
{
    int exitCode = ::boost::unit_test::unit_test_main(&initialise, argc, argv);

    return exitCode;
}

我还创建了函数 initialise

在 OS X 上使用 Xcode 6 构建时,报告以下错误:

Undefined symbols for architecture x86_64:
  "boost::unit_test::unit_test_main(bool (*)(), int, char**)", referenced from:
      _main in main.o

我正在链接单元测试框架库。

有人可以帮忙解决这个错误吗?

有两种可能的解决方案:

1) 在测试模块中包含 <boost/test/included/unit_test.hpp>。这具有同时构建测试框架和测试模块的效果。

2) 用BOOST_TEST_NO_MAINBOOST_TEST_ALTERNATIVE_INIT_API重建测试框架库。

根据documentation,第二个选项是首选。