【发布时间】:2015-08-20 12:34:24
【问题描述】:
我正在尝试使用 boost 构建单元测试,但链接器抱怨缺少函数。拿这个骨架代码
#define BOOST_TEST_DYN_LINK
#define BOOST_TEST_MAIN
#include <boost/test/unit_test.hpp>
BOOST_AUTO_TEST_SUITE(TestFuncOps);
BOOST_AUTO_TEST_CASE(CopyConstructor)
{
}
BOOST_AUTO_TEST_SUITE_END();
但它失败了
Undefined symbols for architecture x86_64:
"boost::unit_test::ut_detail::normalize_test_case_name[abi:cxx11](boost::unit_test::basic_cstring<char const>)", referenced from:
__GLOBAL__sub_I_funcopstest.cc in funcopstest.o
libboost_unit_test_framework 被我的链接器命令找到:
g++-5 --std=c++14 funcopstest.o -L/usr/local/lib -lboost_unit_test_framework -o test_funcops
因为当拿走-lboost_unit_test_framework 时,我得到了大量未定义的引用,而不仅仅是一个。 Boost 是通过 brew 使用 c++11 模式从源代码安装的。我尝试使用每个 -fabi-version=[0-8] 进行编译,但没有任何改变。
有人知道发生了什么吗?
【问题讨论】:
-
我认为您需要链接到执行监视器 boost_prg_exec_monitor,至少这是我的问题一次。
-
@KlemensMorgenstern 不幸的是,这不起作用。我还尝试了 *-mt 变体。
标签: c++ unit-testing boost linker abi