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