我正在使用QT创建器开发一个增强单元测试框架项目。我写了一个小测试程序并试图链接libboost_unit_test_framework-vc100-mt-gd-1_56.lib
。该库存在于指定的路径中。但程序无法编译给出所述链接错误。
我在网上搜索,发现错误应该与#define BOOST_ALL_NO_LIB
一致。但是,我收到了以下错误:
main.obj:-1: error: LNK2019: unresolved external symbol "class boost::unit_test::test_suite * __cdecl init_unit_test_suite(int,char * * const)" (?init_unit_test_suite@@YAPAVtest_suite@unit_test@boost@@HQAPAD@Z) referenced in function _main
上述功能是libboost_unit_test_framework-vc100-mt-gd-1_56.lib
。
我使用VS 2010和相同的boost库编写了相同的单元测试。该计划适用于预期的行为。
在QT上使用boost会出现什么问题?
答案 0 :(得分:0)
您缺少测试模块初始化函数。在包含UTF标头之前,您是否定义了BOOST_TEST_MAIN
或BOOST_TEST_MODULE
?
要自动生成空的测试模块初始化函数,您需要在包含boost / test / unit_test.hpp标头之前定义BOOST_TEST_MAIN。忽略此定义的值。或者,您可以将宏BOOST_TEST_MODULE定义为等于任何字符串(不一定在引号中)。此宏导致与BOOST_TEST_MAIN相同的结果,此外宏值将成为主测试套件的名称。
对于由多个源文件组成的测试模块,您只需在单个测试文件中定义这些标志。否则,您最终会得到初始化函数的多个实例。
此处有更多信息:http://www.boost.org/doc/libs/1_57_0/libs/test/doc/html/utf/user-guide/initialization.html