c++ - init_unit_test_suite重新定义错误

标签 c++ boost-test

我正在尝试从 boost::test 教程编译一个示例:

#include <boost/test/included/unit_test.hpp>
using namespace boost::unit_test;

void test_case1() { /* : */ }

test_suite*
init_unit_test_suite( int argc, char* argv[] )
{
  test_suite* ts1 = BOOST_TEST_SUITE( "test_suite1" );
  ts1->add( BOOST_TEST_CASE( &test_case1 ) );
  framework::master_test_suite().add( ts1 );
  return 0;
}

但是我收到以下错误:

..\src\test.cpp: In function 'boost::unit_test::test_suite* init_unit_test_suite(int, char**)': ..\src\test.cpp:23:1: error: redefinition of 'boost::unit_test::test_suite*
init_unit_test_suite(int, char**)' C:\Boost/boost/test/unit_test_suite.hpp:223:1: error: 'boost::unit_test::test_suite* init_unit_test_suite(int, char**)' previously defined here

如何解决这个问题?

最佳答案

您必须在编译器的命令行(或者如果您使用的是 VS,则在项目设置中)定义了 BOOST_TEST_MAIN

定义 BOOST_TEST_MAIN 引入了该方法,稍后您将重新引入该方法:

// ************************************************************************** //
// **************                BOOST_TEST_MAIN               ************** //
// ************************************************************************** //

#if defined(BOOST_TEST_MAIN)

#ifdef BOOST_TEST_ALTERNATIVE_INIT_API
bool init_unit_test()                   {
#else
::boost::unit_test::test_suite*
init_unit_test_suite( int, char* [] )   {
#endif

http://svn.boost.org/svn/boost/trunk/boost/test/unit_test_suite.hpp

关于c++ - init_unit_test_suite重新定义错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9604378/

相关文章:

c++ - 带有函数的c++类模板

使用 ios_base 和 ofstream 时出现 C++ 错误

c++ - 将 Jenkins 与 boost.test 单元测试一起使用

c++ - Boost 测试库使用不同的 "parameters"运行套件两次

c++ - 运行命名测试时使用 "disabled" boost 测试输出垃圾邮件

c++ - Boost.Test - 问题覆盖主要

c++ - 奇怪的优化?在 `libuv` 中。请解释

c++ - Qt Logging工具多线程,使用可变参数调用信号和槽形成另一个线程,混合C和C++

c++ - boost 测试 : How to automatically attach debugger (GDB)?

c++ - 模板处理程序方法