2012-03-07 20 views
1

init_unit_test_suite再定義エラー:私はブースト::テストチュートリアルの例コンパイルしようとしています

#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

どのようにこの問題を解決するには?

+0

興味深いが、私は、GCC 4.6.2を使用しての例をコンパイルしたのだが、まったくエラーを与えませんでした。 私は同様のエラーメッセージを覚えています。私は#define BOOST_TEST_MAINマクロを使用していましたが、それを取り除くだけで十分でしたが、あなたのケースではないようです。 – dianull

答えて

1

コンパイラのコマンドライン(または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

関連する問題