Boost.Test with multiple files

Started by
1 comment, last by rick_appleton 15 years, 5 months ago
I'm having problems using Boost.Test if I split up my tests into multiple files. If I define BOOST_TEST_DYN_LINK I get the following errors:
c:\program files\boost\boost_1_36_0\boost\test\impl\compiler_log_formatter.ipp(46) : warning C4273: 'boost::unit_test::output::compiler_log_formatter::log_start' : inconsistent dll linkage
        c:\program files\boost\boost_1_36_0\boost\test\output\compiler_log_formatter.hpp(39) : see previous definition of 'log_start'
c:\program files\boost\boost_1_36_0\boost\test\impl\compiler_log_formatter.ipp(56) : warning C4273: 'boost::unit_test::output::compiler_log_formatter::log_finish' : inconsistent dll linkage
.
.
.
and if I don't define that I get the following

matrix.obj : error LNK2005: "public: virtual void __thiscall boost::unit_test::output::compiler_log_formatter::log_start(class std::basic_ostream<char,struct std::char_traits<char> > &,unsigned long)" (?log_start@compiler_log_formatter@output@unit_test@boost@@UAEXAAV?$basic_ostream@DU?$char_traits@D@std@@@std@@K@Z) already defined in camera.obj
matrix.obj : error LNK2005: "public: virtual void __thiscall boost::unit_test::output::compiler_log_formatter::log_finish(class std::basic_ostream<char,struct std::char_traits<char> > &)" (?log_finish@compiler_log_formatter@output@unit_test@boost@@UAEXAAV?$basic_ostream@DU?$char_traits@D@std@@@std@@@Z) already defined in camera.obj
matrix.obj : error LNK2005: "public: virtual void __thiscall boost::unit_test::output::compiler_log_formatter::log_build_info(class std::basic_ostream<char,struct std::char_traits<char> > &)" (?log_build_info@compiler_log_formatter@output@unit_test@boost@@UAEXAAV?$basic_ostream@DU?$char_traits@D@std@@@std@@@Z) already defined in camera.obj
.
.
.
In my files is the following: matrix.cpp

#define BOOST_TEST_MODULE example
#include <boost/test/included/unit_test.hpp>

//____________________________________________________________________________//


BOOST_AUTO_TEST_CASE( test_matrix1 )
{
	BOOST_CHECK( 1 == 0 );
}

//____________________________________________________________________________//

BOOST_AUTO_TEST_CASE( test_matrix2 )
{
	BOOST_CHECK_EQUAL( 0, 0 );
}

//____________________________________________________________________________//

camera.cpp

#include <boost/test/included/unit_test.hpp>

Advertisement
Try including this file instead:

#include <boost/test/unit_test.hpp>
Yep, that fixed it. I totally hadn't noticed I was including a different header than some examples. Thanks a lot!

This topic is closed to new replies.

Advertisement