|
Boost : |
From: Rene Rivera (grafik.list_at_[hidden])
Date: 2004-09-18 13:57:52
All,
Some time ago the following problem surfaced:
Robert Ramey wrote:
> Almost all the tests for the serialization system fail to link with the
> following message:
>
> ### mwld Linker Error:
> # Undefined symbol: '_errno'
> # referenced from 'void
> boost::unit_test::hrf_report_formatter::report_assertions_stat(class
> std::basic_ostream<char, struct std::char_traits<char> > &, unsigned int,
> unsigned long, unsigned long, unsigned long)
>
(?report_assertions_stat_at_hrf_report_formatter_at_unit_test_at_boost@@UAEXAAV?$basi
> c_ostream_at_DU?$char_traits_at_D@std@@@std@@IKKK_at_Z)' in unit_test_result.obj
> (libboost_test_exec_monitor.lib)
> ### mwld Linker Error:
> # Undefined symbol: '_errno'
> # referenced from 'void
> boost::unit_test::hrf_report_formatter::report_sub_test_cases_stat(class
> std::basic_ostream<char, struct std::char_traits<char> > &, unsigned int,
> unsigned long, unsigned long)
>
(?report_sub_test_cases_stat_at_hrf_report_formatter_at_unit_test_at_boost@@UAEXAAV?$
> basic_ostream_at_DU?$char_traits_at_D@std@@@std@@IKK_at_Z)' in
unit_test_result.obj
> (libboost_test_exec_monitor.lib)
>
> Errors caused tool to abort.
>
> To me, this suggests some issue regarding
libboost_test_exec_monitor.lib .
>
> Anyone care to comment?
I spent most of yesterday and today trying to figure this problem out.
What it boiled down to was the "errno" use in the std::log10 function.
But that wasn't the real problem... The reason it gives the above error
is that when building certain tests like serialization and threads the
library was using the multi-threaded runtime while the Boost.Test was
using single-threaded runtime. Which needles to say is a very bad thing
of the build system to do. Much time later I managed to track down the
problem in the build system and fix.
Now, the *important* part... This change will affect all platforms that
use multiple runtimes. As far as I know this includes all Win32
compilers. So don't be surprised if the next run of regression tests
take a long time and more disk space, because different variants of
things will get compiled now.
And if you are really paranoid about testing, you might be advised to
delete the "bin/boost" build directory to start fresh.
Enjoy -- the corrected functionality ;-)
PS. I'm starting a fresh run of the CW-8.3/release tests now. Which
should show a large number of fixed failures.
-- -- Grafik - Don't Assume Anything -- Redshift Software, Inc. - http://redshift-software.com -- rrivera/acm.org - grafik/redshift-software.com - 102708583/icq
Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk