提振.重写main时未定义的符号

Boost.Test - Undefined symbol when overriding main

本文关键字:符号 未定义 重写 main 提振      更新时间:2023-10-16

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

#define BOOST_TEST_ALTERNATIVE_INIT_API
#define BOOST_TEST_NO_MAIN

我的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重新构建测试框架库。

根据文档,第二个选项是首选。