On Friday 11 July 2014 15:45:52 Axel Ismirlian wrote:
From: Andrey Semashev
To: boost@lists.boost.org Date: 07/11/2014 03:38 PM Subject: Re: [boost] Where is this symbol defined? Sent by: "Boost" On Friday 11 July 2014 14:53:04 Axel Ismirlian wrote:
I was wondering where the symbol .test_main(int, char**) is defined if it comes up undefined.
gcc.compile.c+ + ../bin.v2/libs/asio/test/basic_datagram_socket_select.test/gcc-4.8.1/deb ug /
threading-multi/basic_datagram_socket.o gcc.link ../bin.v2/libs/asio/test/basic_datagram_socket_select.test/gcc-4.8.1/deb ug /
threading-multi/basic_datagram_socket_select ld: 0711-224 WARNING: Duplicate
symbol: .init_unit_test_suite(int, char**) ld: 0711-345 Use the -bloadmap or -bnoquiet option to obtain more information. ld: 0711-317 ERROR: Undefined symbol: .test_main(int, char**) collect2: error: ld returned 8 exit status
I have done an object dump and I know it is undefined in libboost_test_exec_monitor.a, but that's as far as I got.
I think, test_main is supposed to be defined by the test. Optionally, Boost.Test could generate it if asked. I think you should define BOOST_TEST_MODULE for that. I don't know if Boost.ASIO tests are supposed to work that way.
I'm a little confused where is BOOST_TEST_MODULE located? And should I define this in the cpp code of the test itself?
It's a macro that should be defined before Boost.Test headers are included. http://www.boost.org/doc/libs/1_55_0/libs/test/doc/html/utf/compilation.html