c++.beta - DMC 8.49.1 lib / Link faliures with Boost.test
- Arjan (25/25) Jul 04 2006 Walter,
- Walter Bright (4/38) Jul 04 2006 What it means is the same symbol is defined in two different object
- Arjan (12/52) Jul 04 2006 Yes I know. But how do I get back to the original definition. The
- Walter Bright (6/23) Jul 04 2006 When things look that complicated, I never even bother trying to figure
- Arjan (6/33) Jul 04 2006 Well this helps, maybe this should be in the unmangle.exe manual somewhe...
Walter, One of the boost.test problems is with linking a lib. The creation of the lib triggers this warning: Warning: Public '?char_type ?1??print_escaped unit_test boost YAXAAV?$basic_ostream std DV?$char_traits std D 1 std V?$basic_ cstring unit_test boost _OD 23 Z23 4V?$fixed_mapping unit_test boost DPBDU?$le s std D std 23 A' already in library, redefinition ignored. and the link error using the lib this: Error 1: Previous Definition Different : ?char_type ?1??print_escaped unit_test boost YAXAAV?$basic_ostream std DV?$char_ raits std D 1 std (void cdecl boost::unit_test::?1??print_escaped::char_type(basic_ostream<>::d::DV?$char_traits::std::D::?1??prin t_escaped &)) unmangle.exe produces the following for the two mentioned above: void cdecl boost::unit_test::?1??print_escaped::char_type(basic_ostream<>::d::DV?$char_traits::std:: ::?1??print_escaped &) void cdecl boost::unit_test::?1??print_escaped::char_type(basic_ostream<>::d::DV?$char_traits::std:: ::?1??print_escaped &) (void cdecl boost::unit_test::?1??print_escaped::char_type(basic_ostream<>::d::DV?$char_traits::std:: ::?1??print_escaped &)) what is ?1?? and ::d::DV?& in the unmangled names? Do you have any directions in solving these kind of problems? Arjan
Jul 04 2006
Arjan wrote:Walter, One of the boost.test problems is with linking a lib. The creation of the lib triggers this warning: Warning: Public '?char_type ?1??print_escaped unit_test boost YAXAAV?$basic_ostream std DV?$char_traits std D 1 std V?$basic_ cstring unit_test boost _OD 23 Z23 4V?$fixed_mapping unit_test boost DPBDU?$le s std D std 23 A' already in library, redefinition ignored. and the link error using the lib this: Error 1: Previous Definition Different : ?char_type ?1??print_escaped unit_test boost YAXAAV?$basic_ostream std DV?$char_ raits std D 1 std (void cdecl boost::unit_test::?1??print_escaped::char_type(basic_ostream<>::d::DV?$char_trai s::std::D::?1??prin t_escaped &)) unmangle.exe produces the following for the two mentioned above: void cdecl boost::unit_test::?1??print_escaped::char_type(basic_ostream<>::d::DV?$char_traits::std:: ::?1??print_escaped &) void cdecl boost::unit_test::?1??print_escaped::char_type(basic_ostream<>::d::DV?$char_traits::std:: ::?1??print_escaped &) (void cdecl boost::unit_test::?1??print_escaped::char_type(basic_ostream<>::d::DV?$char_traits::std:: ::?1??print_escaped &)) what is ?1?? and ::d::DV?& in the unmangled names? Do you have any directions in solving these kind of problems? ArjanWhat it means is the same symbol is defined in two different object files, or twice in the same object module. ?1 means a destructor
Jul 04 2006
Walter Bright wrote:Arjan wrote:Yes I know. But how do I get back to the original definition. The (un)mangled ones above do not seem to exist in this form in the source code. They probably are generated by the compiler and somehow the same definition is produced twice.Walter, One of the boost.test problems is with linking a lib. The creation of the lib triggers this warning: Warning: Public '?char_type ?1??print_escaped unit_test boost YAXAAV?$basic_ostream std DV?$char_traits std D 1 std V?$basic_ cstring unit_test boost _OD 23 Z23 4V?$fixed_mapping unit_test boost DPBDU?$le s std D std 23 A' already in library, redefinition ignored. and the link error using the lib this: Error 1: Previous Definition Different : ?char_type ?1??print_escaped unit_test boost YAXAAV?$basic_ostream std DV?$char_ raits std D 1 std (void cdecl boost::unit_test::?1??print_escaped::char_type(basic_ostream<>::d::DV?$char_trai s::std::D::?1??prin t_escaped &)) unmangle.exe produces the following for the two mentioned above: void cdecl boost::unit_test::?1??print_escaped::char_type(basic_ostream<>::d::DV?$char_traits::std:: ::?1??print_escaped &) void cdecl boost::unit_test::?1??print_escaped::char_type(basic_ostream<>::d::DV?$char_traits::std:: ::?1??print_escaped &) (void cdecl boost::unit_test::?1??print_escaped::char_type(basic_ostream<>::d::DV?$char_traits::std:: ::?1??print_escaped &)) what is ?1?? and ::d::DV?& in the unmangled names? Do you have any directions in solving these kind of problems? ArjanWhat it means is the same symbol is defined in two different object files, or twice in the same object module.?1 means a destructorAre both destructors? How should one read such (un(mangled)lines? boost -> namespace unit_test -> namespace ?1 -> destructor ?? -> .. print_escaped::char_type -> ?? Arjan
Jul 04 2006
Arjan wrote:Walter Bright wrote:When things look that complicated, I never even bother trying to figure it out. I just start whacking the source code down to simplify it.What it means is the same symbol is defined in two different object files, or twice in the same object module.Yes I know. But how do I get back to the original definition. The (un)mangled ones above do not seem to exist in this form in the source code. They probably are generated by the compiler and somehow the same definition is produced twice.?$ means the start of a template name followed by the template arguments. ?? means an operator overload. ?!? means a scoped name?1 means a destructorAre both destructors? How should one read such (un(mangled)lines? boost -> namespace unit_test -> namespace ?1 -> destructor ?? -> .. print_escaped::char_type -> ??
Jul 04 2006
Walter Bright wrote:Arjan wrote:Well this helps, maybe this should be in the unmangle.exe manual somewhere. I already had a strong feeling a templated stream operator overload is causing this. Will investigate it a little further.... Thanks, ArjanWalter Bright wrote:When things look that complicated, I never even bother trying to figure it out. I just start whacking the source code down to simplify it.What it means is the same symbol is defined in two different object files, or twice in the same object module.Yes I know. But how do I get back to the original definition. The (un)mangled ones above do not seem to exist in this form in the source code. They probably are generated by the compiler and somehow the same definition is produced twice.?$ means the start of a template name followed by the template arguments. ?? means an operator overload. ?!? means a scoped name?1 means a destructorAre both destructors? How should one read such (un(mangled)lines? boost -> namespace unit_test -> namespace ?1 -> destructor ?? -> .. print_escaped::char_type -> ??
Jul 04 2006