Possible regression in boost 1.61
Peter Gerell <[email protected]>
| Newsgroups | gmane.comp.parsers.spirit.general |
|---|---|
| Message-ID | <[email protected]> |
Hi, when trying to upgrade to boost version 1.61 I get errors from the linker when building my project. We had very similar errors reported with 1.60. They were fixed by this fix: https://github.com/boostorg/spirit/commit/7690022b931b524223e65f4cd4277b8e5d55d7cb I haven't been able to create a small reproducible example yet, but maybe someone with insight into the differences between 1.60 and 1.61 could get something from the error messages. The two errors I get are: 5>parser.lib(configfile.obj) : error LNK2019: unresolved external symbol "bool __cdecl parser::expr::parse_rule<class std::_Vector_const_iterator<class std::_Vector_val<struct std::_Simple_types<class lexer::Token> > >,struct boost::spirit::x3::context<struct boost::spirit::x3::error_handler_tag,class std::reference_wrapper<class parser::ErrorHandler<class std::_Vector_const_iterator<class std::_Vector_val<struct std::_Simple_types<class lexer::Token> > > > > const ,struct boost::spirit::x3::unused_type>,struct boost::fusion::iterator_range<struct boost::fusion::basic_iterator<struct boost::fusion::struct_iterator_tag,struct boost::fusion::random_access_traversal_tag,struct parser::ast::Attribute,0>,struct boost::fusion::basic_iterator<struct boost::fusion::struct_iterator_tag,struct boost::fusion::random_access_traversal_tag,struct parser::ast::Attribute,1> > >(struct boost::spirit::x3::rule<struct parser::expr::identifier_class,struct parser::ast::Identifier,0>,class std::_Vector_const_iterator<class std::_Vector_val<struct std::_Simple_types<class lexer::Token> > > &,class std::_Vector_const_iterator<class std::_Vector_val<struct std::_Simple_types<class lexer::Token> > > const &,struct boost::spirit::x3::context<struct boost::spirit::x3::error_handler_tag,class std::reference_wrapper<class parser::ErrorHandler<class std::_Vector_const_iterator<class std::_Vector_val<struct std::_Simple_types<class lexer::Token> > > > > const ,struct boost::spirit::x3::unused_type> const &,struct boost::fusion::iterator_range<struct boost::fusion::basic_iterator<struct boost::fusion::struct_iterator_tag,struct boost::fusion::random_access_traversal_tag,struct parser::ast::Attribute,0>,struct boost::fusion::basic_iterator<struct boost::fusion::struct_iterator_tag,struct boost::fusion::random_access_traversal_tag,struct parser::ast::Attribute,1> > &)" (??$parse_rule@V?$_Vector_const_iterator@V?$_Vector_val@U?$_Simple_types@VToken@lexer@@@std@@@std@@@std@@U?$context@Uerror_handler_tag@x3@spirit@boost@@$$CBV?$reference_wrapper@V?$ErrorHandler@V?$_Vector_const_iterator@V?$_Vector_val@U?$_Simple_types@VToken@lexer@@@std@@@std@@@std@@@parser@@@std@@Uunused_type@234@@x3@spirit@boost@@U?$iterator_range@U?$basic_iterator@Ustruct_iterator_tag@fusion@boost@@Urandom_access_traversal_tag@23@UAttribute@ast@parser@@$0A@@fusion@boost@@U?$basic_iterator@Ustruct_iterator_tag@fusion@boost@@Urandom_access_traversal_tag@23@UAttribute@ast@parser@@$00@23@@fusion@6@@expr@parser@@YA_NU?$rule@Uidentifier_class@expr@parser@@UIdentifier@ast@3@$0A@@x3@spirit@boost@@AEAV?$_Vector_const_iterator@V?$_Vector_val@U?$_Simple_types@VToken@lexer@@@std@@@std@@@std@@AEBV67@AEBU?$context@Uerror_handler_tag@x3@spirit@boost@@$$CBV?$reference_wrapper@V?$ErrorHandler@V?$_Vector_const_iterator@V?$_Vector_val@U?$_Simple_types@VToken@lexer@@@std@@@std@@@std@@@parser@@@std@@Uunused_type@234@@345@AEAU?$iterator_range@U?$basic_iterator@Ustruct_iterator_tag@fusion@boost@@Urandom_access_traversal_tag@23@UAttribute@ast@parser@@$0A@@fusion@boost@@U?$basic_iterator@Ustruct_iterator_tag@fusion@boost@@Urandom_access_traversal_tag@23@UAttribute@ast@parser@@$00@23@@fusion@5@@Z) referenced in function "public: bool __cdecl boost::spirit::x3::rule<struct parser::expr::identifier_class,struct parser::ast::Identifier,0>::parse<class std::_Vector_const_iterator<class std::_Vector_val<struct std::_Simple_types<class lexer::Token> > >,struct boost::spirit::x3::context<struct boost::spirit::x3::error_handler_tag,class std::reference_wrapper<class parser::ErrorHandler<class std::_Vector_const_iterator<class std::_Vector_val<struct std::_Simple_types<class lexer::Token> > > > > const ,struct boost::spirit::x3::unused_type>,struct boost::fusion::iterator_range<struct boost::fusion::basic_iterator<struct boost::fusion::struct_iterator_tag,struct boost::fusion::random_access_traversal_tag,struct parser::ast::Attribute,0>,struct boost::fusion::basic_iterator<struct boost::fusion::struct_iterator_tag,struct boost::fusion::random_access_traversal_tag,struct parser::ast::Attribute,1> > >(class std::_Vector_const_iterator<class std::_Vector_val<struct std::_Simple_types<class lexer::Token> > > &,class std::_Vector_const_iterator<class std::_Vector_val<struct std::_Simple_types<class lexer::Token> > > const &,struct boost::spirit::x3::context<struct boost::spirit::x3::error_handler_tag,class std::reference_wrapper<class parser::ErrorHandler<class std::_Vector_const_iterator<class std::_Vector_val<struct std::_Simple_types<class lexer::Token> > > > > const ,struct boost::spirit::x3::unused_type> const &,struct boost::spirit::x3::unused_type,struct boost::fusion::iterator_range<struct boost::fusion::basic_iterator<struct boost::fusion::struct_iterator_tag,struct boost::fusion::random_access_traversal_tag,struct parser::ast::Attribute,0>,struct boost::fusion::basic_iterator<struct boost::fusion::struct_iterator_tag,struct boost::fusion::random_access_traversal_tag,struct parser::ast::Attribute,1> > &)const " (??$parse@V?$_Vector_const_iterator@V?$_Vector_val@U?$_Simple_types@VToken@lexer@@@std@@@std@@@std@@U?$context@Uerror_handler_tag@x3@spirit@boost@@$$CBV?$reference_wrapper@V?$ErrorHandler@V?$_Vector_const_iterator@V?$_Vector_val@U?$_Simple_types@VToken@lexer@@@std@@@std@@@std@@@parser@@@std@@Uunused_type@234@@x3@spirit@boost@@U?$iterator_range@U?$basic_iterator@Ustruct_iterator_tag@fusion@boost@@Urandom_access_traversal_tag@23@UAttribute@ast@parser@@$0A@@fusion@boost@@U?$basic_iterator@Ustruct_iterator_tag@fusion@boost@@Urandom_access_traversal_tag@23@UAttribute@ast@parser@@$00@23@@fusion@6@@?$rule@Uidentifier_class@expr@parser@@UIdentifier@ast@3@$0A@@x3@spirit@boost@@QEBA_NAEAV?$_Vector_const_iterator@V?$_Vector_val@U?$_Simple_types@VToken@lexer@@@std@@@std@@@std@@AEBV45@AEBU?$context@Uerror_handler_tag@x3@spirit@boost@@$$CBV?$reference_wrapper@V?$ErrorHandler@V?$_Vector_const_iterator@V?$_Vector_val@U?$_Simple_types@VToken@lexer@@@std@@@std@@@std@@@parser@@@std@@Uunused_type@234@@123@Uunused_type@123@AEAU?$iterator_range@U?$basic_iterator@Ustruct_iterator_tag@fusion@boost@@Urandom_access_traversal_tag@23@UAttribute@ast@parser@@$0A@@fusion@boost@@U?$basic_iterator@Ustruct_iterator_tag@fusion@boost@@Urandom_access_traversal_tag@23@UAttribute@ast@parser@@$00@23@@fusion@3@@Z) 5>parser.lib(common.obj) : error LNK2019: unresolved external symbol "bool __cdecl parser::expr::parse_rule<class std::_Vector_const_iterator<class std::_Vector_val<struct std::_Simple_types<class lexer::Token> > >,struct boost::spirit::x3::context<struct boost::spirit::x3::error_handler_tag,class std::reference_wrapper<class parser::ErrorHandler<class std::_Vector_const_iterator<class std::_Vector_val<struct std::_Simple_types<class lexer::Token> > > > > const ,struct boost::spirit::x3::unused_type>,struct parser::ast::NamespaceStart>(struct boost::spirit::x3::rule<struct parser::expr::identifier_class,struct parser::ast::Identifier,0>,class std::_Vector_const_iterator<class std::_Vector_val<struct std::_Simple_types<class lexer::Token> > > &,class std::_Vector_const_iterator<class std::_Vector_val<struct std::_Simple_types<class lexer::Token> > > const &,struct boost::spirit::x3::context<struct boost::spirit::x3::error_handler_tag,class std::reference_wrapper<class parser::ErrorHandler<class std::_Vector_const_iterator<class std::_Vector_val<struct std::_Simple_types<class lexer::Token> > > > > const ,struct boost::spirit::x3::unused_type> const &,struct parser::ast::NamespaceStart &)" (??$parse_rule@V?$_Vector_const_iterator@V?$_Vector_val@U?$_Simple_types@VToken@lexer@@@std@@@std@@@std@@U?$context@Uerror_handler_tag@x3@spirit@boost@@$$CBV?$reference_wrapper@V?$ErrorHandler@V?$_Vector_const_iterator@V?$_Vector_val@U?$_Simple_types@VToken@lexer@@@std@@@std@@@std@@@parser@@@std@@Uunused_type@234@@x3@spirit@boost@@UNamespaceStart@ast@parser@@@expr@parser@@YA_NU?$rule@Uidentifier_class@expr@parser@@UIdentifier@ast@3@$0A@@x3@spirit@boost@@AEAV?$_Vector_const_iterator@V?$_Vector_val@U?$_Simple_types@VToken@lexer@@@std@@@std@@@std@@AEBV67@AEBU?$context@Uerror_handler_tag@x3@spirit@boost@@$$CBV?$reference_wrapper@V?$ErrorHandler@V?$_Vector_const_iterator@V?$_Vector_val@U?$_Simple_types@VToken@lexer@@@std@@@std@@@std@@@parser@@@std@@Uunused_type@234@@345@AEAUNamespaceStart@ast@1@@Z) referenced in function "public: bool __cdecl boost::spirit::x3::rule<struct parser::expr::identifier_class,struct parser::ast::Identifier,0>::parse<class std::_Vector_const_iterator<class std::_Vector_val<struct std::_Simple_types<class lexer::Token> > >,struct boost::spirit::x3::context<struct boost::spirit::x3::error_handler_tag,class std::reference_wrapper<class parser::ErrorHandler<class std::_Vector_const_iterator<class std::_Vector_val<struct std::_Simple_types<class lexer::Token> > > > > const ,struct boost::spirit::x3::unused_type>,struct parser::ast::NamespaceStart>(class std::_Vector_const_iterator<class std::_Vector_val<struct std::_Simple_types<class lexer::Token> > > &,class std::_Vector_const_iterator<class std::_Vector_val<struct std::_Simple_types<class lexer::Token> > > const &,struct boost::spirit::x3::context<struct boost::spirit::x3::error_handler_tag,class std::reference_wrapper<class parser::ErrorHandler<class std::_Vector_const_iterator<class std::_Vector_val<struct std::_Simple_types<class lexer::Token> > > > > const ,struct boost::spirit::x3::unused_type> const &,struct boost::spirit::x3::unused_type,struct parser::ast::NamespaceStart &)const " (??$parse@V?$_Vector_const_iterator@V?$_Vector_val@U?$_Simple_types@VToken@lexer@@@std@@@std@@@std@@U?$context@Uerror_handler_tag@x3@spirit@boost@@$$CBV?$reference_wrapper@V?$ErrorHandler@V?$_Vector_const_iterator@V?$_Vector_val@U?$_Simple_types@VToken@lexer@@@std@@@std@@@std@@@parser@@@std@@Uunused_type@234@@x3@spirit@boost@@UNamespaceStart@ast@parser@@@?$rule@Uidentifier_class@expr@parser@@UIdentifier@ast@3@$0A@@x3@spirit@boost@@QEBA_NAEAV?$_Vector_const_iterator@V?$_Vector_val@U?$_Simple_types@VToken@lexer@@@std@@@std@@@std@@AEBV45@AEBU?$context@Uerror_handler_tag@x3@spirit@boost@@$$CBV?$reference_wrapper@V?$ErrorHandler@V?$_Vector_const_iterator@V?$_Vector_val@U?$_Simple_types@VToken@lexer@@@std@@@std@@@std@@@parser@@@std@@Uunused_type@234@@123@Uunused_type@123@AEAUNamespaceStart@ast@parser@@@Z) Regards, Peter ------------------------------------------------------------------------------ Mobile security can be enabling, not merely restricting. Employees who bring their own devices (BYOD) to work are irked by the imposition of MDM restrictions. Mobile Device Manager Plus allows you to control only the apps on BYO-devices by containerizing them, leaving personal data untouched! https://ad.doubleclick.net/ddm/clk/304595813;131938128;j _______________________________________________ Spirit-general mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/spirit-general