[Boost-bugs] [Boost C++ Libraries] #3435: Linking failure with MSVC 7.1

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