[Boost-bugs] [Boost C++ Libraries] #1892: boost::spirit::static_ causes link error (using wave)

Subject: [Boost-bugs] [Boost C++ Libraries] #1892: boost::spirit::static_ causes link error (using wave)
From: Boost C++ Libraries (noreply_at_[hidden])
Date: 2008-05-03 04:44:47


#1892: boost::spirit::static_ causes link error (using wave)
--------------------------+-------------------------------------------------
 Reporter: anonymous | Owner: djowel
     Type: Bugs | Status: new
Milestone: Boost 1.36.0 | Component: spirit
  Version: Boost 1.35.0 | Severity: Regression
 Keywords: |
--------------------------+-------------------------------------------------
 When using wave, I encounter a link error when attempting to #include wave
 headers in more than one translation unit. Although this is via use of
 wave, I believe it is due to a breaking change in spirit. There is no
 error in 1.34. This effectively renders wave/spirit next to useless as it
 forces users to use one source file in their projects.

 The link error text is (vs2005):
 1>token_output.obj : error LNK2005: "public: __thiscall `public:
 __thiscall boost::spirit::static_<class boost::thread_specific_ptr<class
 boost::weak_ptr<struct boost::spirit::impl::grammar_helper<struct
 boost::spirit::grammar<class
 boost::wave::util::time_conversion::time_conversion_grammar,struct
 boost::spirit::parser_context<struct boost::spirit::nil_t> >,class
 boost::wave::util::time_conversion::time_conversion_grammar,class
 boost::spirit::scanner<char const *,struct
 boost::spirit::scanner_policies<struct
 boost::spirit::skipper_iteration_policy<struct
 boost::spirit::iteration_policy>,struct boost::spirit::match_policy,struct
 boost::spirit::action_policy> > > > >,class
 boost::spirit::impl::get_definition_static_data_tag>::static_<class
 boost::thread_specific_ptr<class boost::weak_ptr<struct
 boost::spirit::impl::grammar_helper<struct boost::spirit::grammar<class
 boost::wave::util::time_conversion::time_conversion_grammar,struct
 boost::spirit::parser_context<struct boost::spirit::nil_t> >,class
 boost::wave::util::time_conversion::time_conversion_grammar,class
 boost::spirit::scanner<char const *,struct
 boost::spirit::scanner_policies<struct
 boost::spirit::skipper_iteration_policy<struct
 boost::spirit::iteration_policy>,struct boost::spirit::match_policy,struct
 boost::spirit::action_policy> > > > >,class
 boost::spirit::impl::get_definition_static_data_tag>(class
 boost::spirit::impl::get_definition_static_data_tag)'::`2'::destructor::~destructor(void)"
 (??1destructor@?1???0?$static__at_V?$thread_specific_ptr_at_V?$weak_ptr_at_U?$grammar_helper_at_U?$grammar_at_Vtime_conversion_grammar_at_time_conversion_at_util@wave_at_boost@@U?$parser_context_at_Unil_t_at_spirit@boost@@@spirit_at_5@@spirit_at_boost@@Vtime_conversion_grammar_at_time_conversion_at_util@wave_at_3@V?$scanner_at_PBDU?$scanner_policies_at_U?$skipper_iteration_policy_at_Uiteration_policy_at_spirit@boost@@@spirit_at_boost@@Umatch_policy_at_23@Uaction_policy_at_23@@spirit_at_boost@@@23@@impl_at_spirit@boost@@@boost@@@boost@@Vget_definition_static_data_tag_at_impl@spirit_at_2@@spirit_at_boost@@QAE_at_Vget_definition_static_data_tag_at_impl@23@@Z_at_QAE@XZ)
 already defined in scramble.obj
 1>token_output.obj : error LNK2005: "public: static void __cdecl `public:
 __thiscall boost::spirit::static_<class boost::thread_specific_ptr<class
 boost::weak_ptr<struct boost::spirit::impl::grammar_helper<struct
 boost::spirit::grammar<class
 boost::wave::util::time_conversion::time_conversion_grammar,struct
 boost::spirit::parser_context<struct boost::spirit::nil_t> >,class
 boost::wave::util::time_conversion::time_conversion_grammar,class
 boost::spirit::scanner<char const *,struct
 boost::spirit::scanner_policies<struct
 boost::spirit::skipper_iteration_policy<struct
 boost::spirit::iteration_policy>,struct boost::spirit::match_policy,struct
 boost::spirit::action_policy> > > > >,class
 boost::spirit::impl::get_definition_static_data_tag>::static_<class
 boost::thread_specific_ptr<class boost::weak_ptr<struct
 boost::spirit::impl::grammar_helper<struct boost::spirit::grammar<class
 boost::wave::util::time_conversion::time_conversion_grammar,struct
 boost::spirit::parser_context<struct boost::spirit::nil_t> >,class
 boost::wave::util::time_conversion::time_conversion_grammar,class
 boost::spirit::scanner<char const *,struct
 boost::spirit::scanner_policies<struct
 boost::spirit::skipper_iteration_policy<struct
 boost::spirit::iteration_policy>,struct boost::spirit::match_policy,struct
 boost::spirit::action_policy> > > > >,class
 boost::spirit::impl::get_definition_static_data_tag>(class
 boost::spirit::impl::get_definition_static_data_tag)'::`3'::default_ctor::construct(void)"
 (?construct_at_default_ctor@?2???0?$static__at_V?$thread_specific_ptr_at_V?$weak_ptr_at_U?$grammar_helper_at_U?$grammar_at_Vtime_conversion_grammar_at_time_conversion_at_util@wave_at_boost@@U?$parser_context_at_Unil_t_at_spirit@boost@@@spirit_at_5@@spirit_at_boost@@Vtime_conversion_grammar_at_time_conversion_at_util@wave_at_3@V?$scanner_at_PBDU?$scanner_policies_at_U?$skipper_iteration_policy_at_Uiteration_policy_at_spirit@boost@@@spirit_at_boost@@Umatch_policy_at_23@Uaction_policy_at_23@@spirit_at_boost@@@23@@impl_at_spirit@boost@@@boost@@@boost@@Vget_definition_static_data_tag_at_impl@spirit_at_2@@spirit_at_boost@@QAE_at_Vget_definition_static_data_tag_at_impl@34@@Z_at_SAXXZ)
 already defined in scramble.obj

--
Ticket URL: <http://svn.boost.org/trac/boost/ticket/1892>
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:49:57 UTC