升压单元测试编译在Eclipse中失败

use*_*739 4 c++ boost unit-testing eclipse-cdt

我想通过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);


    }
Run Code Online (Sandbox Code Playgroud)

错误

12:55:13****增量构建配置调试项目NewProject****信息:内部构建器用于构建g ++"-IC:\ boost_1_52_0\boost_1_52_0"-O0 -g3 -Wall -c -fmessage-长度= 0 -o "SRC\NewProject.o" "..\SRC\NewProject.cpp"克++ -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 升压:: unit_test :: unit_test_log_t :: set_checkpoint(升压:: unit_test :: basic_cstring,无符号整型,升压:: unit_test :: basic_cstring)" C:\用户\ SAM \工作空间1\NewProject \调试/../的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:\用户\ SAM \工作空间1\NewProject \调试/../的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 :未定义的引用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:未定义引用 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 ::ü nit_test :: test_case :: test_case(升压:: unit_test :: basic_cstring,升压:: unit_test :: callback0常量&) 'SRC\NewProject.o:在功能 ZN5boost9unit_test15unit_test_log_tD1Ev': C:/boost_1_52_0/boost_1_52_0/boost/test/unit_test_log.hpp:93: undefined reference to虚函数表为升压:: 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'cols2.exe:错误:ld返回1退出状态

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

cae*_*ist 6

似乎你忘了添加-lboost_unit_test_framework-mt 或在Windows系统中命名的任何库


mr_*_*org 5

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

#define BOOST_TEST_MODULE First_TestSuite
#include <boost/test/included/unit_test.hpp>
Run Code Online (Sandbox Code Playgroud)

而不是你的

#include <boost/test/unit_test.hpp>
Run Code Online (Sandbox Code Playgroud)

而且你只需要#define BOOST_TEST_MODULE First_TestSuite带有标题的变体.