
I'm getting several compiler errors when trying to use the Spirit library. When compiling one of the samples from the v1.6 documentation, I get a linker error: SpiritTest.obj : fatal error LNK1179: invalid or corrupt file: duplicate comdat "?do_parse@?$parse_subrule@V?$match@Unil_t@spirit@boost@@@spirit@boost@@U?$subrules_scanner@V?$scanner@PBDU?$scanner_policies@U?$skipper_iteration_policy@Uiteration_policy@spirit@boost@@@spirit@boost@@Umatch_policy@23@Uaction_policy@23@@spirit@boos67ac75e0" LNK1179 suggested that the /H _compiler_ option might be involved. It (supposedly) controls how long a symbol is allowed to be when the compiler is generating symbol names. I've tried several different variations on the /H option, /H512, /H1024, etc. They all give the same error message, and the symbol "?do_parse@..." doesn't get any longer (or shorter for that matter). I also get a number compiler errors when I #include <boost/spirit.hpp>: c:\sdks\boost-1.30.2\boost\spirit\utility\impl\chset\basic_chset.ipp(32) : error C2955: 'arg' : use of class template requires template argument list c:\sdks\boost-1.30.2\boost\bind\arg.hpp(26) : see declaration of 'arg' ----------basic_chset.ipp, lines 31-33 template <typename CharT> inline basic_chset<CharT>::basic_chset(basic_chset const& arg) : rr(arg.rr) {} ----------arg.hpp lines 24-26 template<int I> class arg { }; The boost/bind include is in the core/composite/actions. Trying to mess with the order of inclusion seems Fraught With Peril. The basic_chset template is in "utility", and everything in "utility" depends on various bits and pieces of "core". basic_chset is derived from unary, which is defined in core/composite. A Gordian knot... and me without a sword. --Mark Storer Senior Software Engineer Verity, Inc.