【问题标题】:Boost.Test - Undefined symbol when overriding mainBoost.Test - 覆盖 main 时未定义的符号
【发布时间】:2015-09-02 09:46:21
【问题描述】:

我想在使用 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

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

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

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

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

【问题讨论】:

    标签: c++ boost boost-test


    【解决方案1】:

    有两种可能的解决方案:

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-12-18
      • 1970-01-01
      • 2012-12-02
      • 2014-04-19
      • 1970-01-01
      • 1970-01-01
      • 2014-11-23
      • 1970-01-01
      相关资源
      最近更新 更多