4

我想通过 Eclipse 编译以下代码行,但在构建期间我会得到我无法理解的错误。有没有人有解决方案来解决它。

#include <boost/test/unit_test.hpp>


#define BOOST_TEST_DYN_LINK
#define BOOST_AUTO_TEST_MAIN
#define BOOST_TEST_MODULE First_TestSuite

BOOST_AUTO_TEST_CASE( First_TEst )
 {

BOOST_CHECK(2 == 2);


    }

错误

12:55:13 **** 项目 NewProject 的配置调试的增量构建 **** 信息:内部构建器用于构建 g++ "-IC:\boost_1_52_0\boost_1_52_0" -O0 -g3 -Wall -c -fmessage- length=0 -o "src\NewProject.o" "..\src\NewProject.cpp" g++ -o NewProject.exe "src\NewProject.o" src\NewProject.o: 在函数 ZN10First_TEst11test_methodEv': C:\Users\sam\workspace1\NewProject\Debug/../src/NewProject.cpp:19: undefined reference to boost::unit_test::unit_test_log_t ::set_checkpoint(boost::unit_test::basic_cstring, unsigned int, boost::unit_test::basic_cstring)' C:\Users\sam\workspace1\NewProject\Debug/../src/NewProject.cpp:19: 未定义参考到 boost::test_tools::tt_detail::check_impl(boost::test_tools::predicate_result const&, boost::unit_test::lazy_ostream const&, boost::unit_test::basic_cstring<char const>, unsigned int, boost::test_tools::tt_detail::tool_level, boost::test_tools::tt_detail::check_type, unsigned int, ...)' src\NewProject.o: In function _static_initialization_and_destruction_0':C:\Users\sam\workspace1\NewProject\Debug/../src/NewProject.cpp:16:未定义的引用 boost::unit_test::ut_detail::auto_test_unit_registrar::auto_test_unit_registrar(boost::unit_test::test_case*, unsigned long)' src\NewProject.o: In function ZN5boost9unit_test15unit_test_log_tC1Ev': C:/boost_1_52_0/boost_1_52_0/boost/test/unit_test_log.hpp:131: undefined reference to vtable for boost::unit_test::unit_test_log_t' src\NewProject.o: In function ZN5boost9unit_test14make_test_caseERKNS0_9callback0INS0_9ut_detail6unusedEEENS0_13basic_cstringIKcEE': C:/boost_1_52_0/boost_1_52_0/boost/test/unit_test_suite_impl.hpp:255: undefined reference to boost::unit_test::ut_detail::normalize_test_case_name(boost::unit_test::basic_cstring<char const>)' C:/boost_1_52_0/boost_1_52_0/boost/test/unit_test_suite_impl.hpp:255: undefined reference to boost::unit_test ::test_case::test_case(boost::unit_test::basic_cstring, boost::unit_test::callback0 const&)' src\NewProject.o: in function ZN5boost9unit_test15unit_test_log_tD1Ev': C:/boost_1_52_0/boost_1_52_0/boost/test/unit_test_log.hpp:93: undefined reference tovtable for boost::unit_test::unit_test_log_t' c:/mingw/bin/ ../lib/gcc/mingw32/4.7.2/../../../libmingw32.a(main.o):main.c:(.text.startup+0xa7): 未定义引用`WinMain@ 16' collect2.exe: 错误: ld 返回 1 退出状态

12:55:24 构建完成(耗时 11s.567ms)

4

3 回答 3

6

似乎您忘记添加-lboost_unit_test_framework-mt 或在 Windows 系统中命名该库

于 2013-01-24T12:20:01.720 回答
6

如果您只想使用标头变体,则应包括以下内容

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

而不是你的

#include <boost/test/unit_test.hpp>

而且您只需要#define BOOST_TEST_MODULE First_TestSuite带有标头的变体。

于 2014-02-08T10:53:09.413 回答
1

您应该使用Single Header Variant of the UTF来自 Boost.

http://www.boost.org/doc/libs/1_46_1/libs/test/doc/html/utf/user-guide/usage-variants/single-header-variant.html

于 2014-01-08T05:30:07.690 回答