Subject: [Boost-bugs] [Boost C++ Libraries] #3435: Linking failure with MSVC 7.1
From: Boost C++ Libraries (noreply_at_[hidden])
Date: 2009-09-11 15:46:00
#3435: Linking failure with MSVC 7.1
--------------------------+-------------------------------------------------
Reporter: andysem | Owner: rogeeff
Type: Bugs | Status: new
Milestone: Boost 1.41.0 | Component: test
Version: Boost 1.40.0 | Severity: Problem
Keywords: msvc |
--------------------------+-------------------------------------------------
While trying to build Boost.Test 1.40 into a shared library with MSVC 7.1
I encountered the following linking errors:
{{{
boost_unit_test_framework-vc71-mt-p-1_40.exp : error LNK2001: unresolved
external symbol "unsigned int `public: static class
boost::unit_test::results_collector_t & __cdecl
boost::unit_test::singleton<class
boost::unit_test::results_collector_t>::instance(void)'::`2'::$S11"
(?$S11@?1??instance@?$singleton_at_Vresults_collector_t_at_unit_test_at_boost@@@unit_test_at_boost@@SAAAVresults_collector_t_at_34@XZ_at_4IA)
boost_unit_test_framework-vc71-mt-p-1_40.exp : error LNK2001: unresolved
external symbol "unsigned int `public: static class
boost::unit_test::unit_test_monitor_t & __cdecl
boost::unit_test::singleton<class
boost::unit_test::unit_test_monitor_t>::instance(void)'::`2'::$S11"
(?$S11@?1??instance@?$singleton_at_Vunit_test_monitor_t_at_unit_test_at_boost@@@unit_test_at_boost@@SAAAVunit_test_monitor_t_at_34@XZ_at_4IA)
boost_unit_test_framework-vc71-mt-p-1_40.exp : error LNK2001: unresolved
external symbol "unsigned int `public: static class
boost::unit_test::results_collector_t & __cdecl
boost::unit_test::singleton<class
boost::unit_test::results_collector_t>::instance(void)'::`2'::$S13"
(?$S13@?1??instance@?$singleton_at_Vresults_collector_t_at_unit_test_at_boost@@@unit_test_at_boost@@SAAAVresults_collector_t_at_34@XZ_at_4IA)
boost_unit_test_framework-vc71-mt-p-1_40.exp : error LNK2001: unresolved
external symbol "unsigned int `public: static class
boost::unit_test::unit_test_log_t & __cdecl
boost::unit_test::singleton<class
boost::unit_test::unit_test_log_t>::instance(void)'::`2'::$S13"
(?$S13@?1??instance@?$singleton_at_Vunit_test_log_t_at_unit_test_at_boost@@@unit_test_at_boost@@SAAAVunit_test_log_t_at_34@XZ_at_4IA)
boost_unit_test_framework-vc71-mt-p-1_40.exp : error LNK2001: unresolved
external symbol "unsigned int `public: static class
boost::unit_test::unit_test_log_t & __cdecl
boost::unit_test::singleton<class
boost::unit_test::unit_test_log_t>::instance(void)'::`2'::$S14"
(?$S14@?1??instance@?$singleton_at_Vunit_test_log_t_at_unit_test_at_boost@@@unit_test_at_boost@@SAAAVunit_test_log_t_at_34@XZ_at_4IA)
boost_unit_test_framework-vc71-mt-p-1_40.exp : error LNK2001: unresolved
external symbol "unsigned int `public: static class
boost::unit_test::results_collector_t & __cdecl
boost::unit_test::singleton<class
boost::unit_test::results_collector_t>::instance(void)'::`2'::$S26"
(?$S26@?1??instance@?$singleton_at_Vresults_collector_t_at_unit_test_at_boost@@@unit_test_at_boost@@SAAAVresults_collector_t_at_34@XZ_at_4IA)
boost_unit_test_framework-vc71-mt-p-1_40.exp : error LNK2001: unresolved
external symbol "unsigned int `public: static class
boost::unit_test::unit_test_log_t & __cdecl
boost::unit_test::singleton<class
boost::unit_test::unit_test_log_t>::instance(void)'::`2'::$S30"
(?$S30@?1??instance@?$singleton_at_Vunit_test_log_t_at_unit_test_at_boost@@@unit_test_at_boost@@SAAAVunit_test_log_t_at_34@XZ_at_4IA)
boost_unit_test_framework-vc71-mt-p-1_40.exp : error LNK2001: unresolved
external symbol "unsigned int `public: static class
boost::unit_test::results_collector_t & __cdecl
boost::unit_test::singleton<class
boost::unit_test::results_collector_t>::instance(void)'::`2'::$S3"
(?$S3@?1??instance@?$singleton_at_Vresults_collector_t_at_unit_test_at_boost@@@unit_test_at_boost@@SAAAVresults_collector_t_at_34@XZ_at_4IA)
boost_unit_test_framework-vc71-mt-p-1_40.exp : error LNK2001: unresolved
external symbol "unsigned int `public: static class
boost::unit_test::progress_monitor_t & __cdecl
boost::unit_test::singleton<class
boost::unit_test::progress_monitor_t>::instance(void)'::`2'::$S5"
(?$S5@?1??instance@?$singleton_at_Vprogress_monitor_t_at_unit_test_at_boost@@@unit_test_at_boost@@SAAAVprogress_monitor_t_at_34@XZ_at_4IA)
boost_unit_test_framework-vc71-mt-p-1_40.exp : error LNK2001: unresolved
external symbol "unsigned int `public: static class
boost::unit_test::results_collector_t & __cdecl
boost::unit_test::singleton<class
boost::unit_test::results_collector_t>::instance(void)'::`2'::$S5"
(?$S5@?1??instance@?$singleton_at_Vresults_collector_t_at_unit_test_at_boost@@@unit_test_at_boost@@SAAAVresults_collector_t_at_34@XZ_at_4IA)
boost_unit_test_framework-vc71-mt-p-1_40.exp : error LNK2001: unresolved
external symbol "unsigned int `public: static class
boost::unit_test::results_collector_t & __cdecl
boost::unit_test::singleton<class
boost::unit_test::results_collector_t>::instance(void)'::`2'::$S6"
(?$S6@?1??instance@?$singleton_at_Vresults_collector_t_at_unit_test_at_boost@@@unit_test_at_boost@@SAAAVresults_collector_t_at_34@XZ_at_4IA)
boost_unit_test_framework-vc71-mt-p-1_40.exp : error LNK2001: unresolved
external symbol "unsigned int `public: static class
boost::unit_test::unit_test_log_t & __cdecl
boost::unit_test::singleton<class
boost::unit_test::unit_test_log_t>::instance(void)'::`2'::$S7"
(?$S7@?1??instance@?$singleton_at_Vunit_test_log_t_at_unit_test_at_boost@@@unit_test_at_boost@@SAAAVunit_test_log_t_at_34@XZ_at_4IA)
boost_unit_test_framework-vc71-mt-p-1_40.exp : error LNK2001: unresolved
external symbol "unsigned int `public: static class
boost::unit_test::unit_test_log_t & __cdecl
boost::unit_test::singleton<class
boost::unit_test::unit_test_log_t>::instance(void)'::`2'::$S9"
(?$S9@?1??instance@?$singleton_at_Vunit_test_log_t_at_unit_test_at_boost@@@unit_test_at_boost@@SAAAVunit_test_log_t_at_34@XZ_at_4IA)
}}}
Apparently, this is a compiler issue, as the missing symbols are internal
variables related to the function-local statics. However, I managed to
work it around, please find the patch attached. I didn't test it against
more recent MSVC versions, it may happen that the newer compilers require
this twist, too.
-- Ticket URL: <https://svn.boost.org/trac/boost/ticket/3435> Boost C++ Libraries <http://www.boost.org/> Boost provides free peer-reviewed portable C++ source libraries.
This archive was generated by hypermail 2.1.7 : 2017-02-16 18:50:01 UTC