c++ - 使用 Boost 构建单元测试时出现链接器错误

标签 c++ unit-testing c++11 gcc boost

我正在使用带有 Boost 1.59 的 gcc 4.8.2。我在 Kubuntu 12.04 LTS 上运行。我只是想编写一个简单的单元测试应用程序,但我遇到了链接器错误。

这是我的代码:

main.cpp

#define BOOST_TEST_MODULE My Module
#define BOOST_TEST_DYN_LINK
#include <boost/test/unit_test.hpp>

test1.cpp

#define BOOST_TEST_DYN_LINK
#include <boost/test/unit_test.hpp>

BOOST_AUTO_TEST_SUITE( suite1 );
BOOST_AUTO_TEST_CASE( case1 )
{
    BOOST_TEST_MESSAGE( "Hello!" );
}
BOOST_AUTO_TEST_SUITE_END();

当我构建时,我会这样做:g++ -std=c++11 -o test main.cpp test1.cpp -I/usr/local/include -L/usr/local/lib -lboost_unit_test_framework。我得到了这个结果:

/tmp/ccmNLUMx.o: In function `__static_initialization_and_destruction_0(int, int)':
test1.cpp:(.text+0x15e): undefined reference to `boost::unit_test::ut_detail::auto_test_unit_registrar::auto_test_unit_registrar(boost::unit_test::basic_cstring<char const>)'
test1.cpp:(.text+0x1b9): undefined reference to `boost::unit_test::ut_detail::auto_test_unit_registrar::auto_test_unit_registrar(boost::unit_test::test_case*, unsigned long)'
/tmp/ccmNLUMx.o: In function `boost::unit_test::make_test_case(boost::unit_test::callback0<boost::unit_test::ut_detail::unused> const&, boost::unit_test::basic_cstring<char const>)':
test1.cpp: (.text._ZN5boost9unit_test14make_test_caseERKNS0_9callback0INS0_9ut_detail6unusedEEENS0_13basic_cstringIKcEE[_ZN5boost9unit_test14make_test_caseERKNS0_9callback0INS0_9ut_detail6unusedEEENS0_13basic_cstringIKcEE]+0x6d): undefined reference to `boost::unit_test::test_case::test_case(boost::unit_test::basic_cstring<char const>, boost::unit_test::callback0<boost::unit_test::ut_detail::unused> const&)'
collect2: erreur: ld a retourné 1 code d'état d'exécution

你知道我做错了什么吗?谢谢!

多米尼克

编辑

给出的是什么 here无法解决我的问题... :-(

最佳答案

我遇到了同样的问题。我的解决方案是,更改包含路径:

#include <boost/test/unit_test.hpp> // wrong  
#include <boost/test/included/unit_test.hpp> // this work

我在 boost unit test 的第一个例子中找到了解决方案.我用 boost 1.60 和 gcc 4.8.5 测试它

关于c++ - 使用 Boost 构建单元测试时出现链接器错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33644088/

相关文章:

c++ - 如何制作基本的 FPS 计数器?

c++ - 如何重新启动崩溃的线程

python - 谁在 "don' t 模拟第 3 方”和 "ensure close() called"之间的战斗中获胜?

C++ 拆分字符串反馈

c++ - 非复制 istringstream

c++ - 如何在C++中最佳化序列化两个文件夹的差异

android - 如何向代码库追溯添加测试?

unit-testing - Ember 测试 : Cannot read property 'createRecord' of null

c++ - 哪个系统软件负责运行时检查

c++ - C 标准库的(其余部分)未涵盖 C 标准库的哪些部分?