Hi, On Wed, Jul 11, 2012 at 10:54:24PM +1000, Robert Durkacz wrote:
command line of compile and link steps: g++ -c -Wall -g -I.. -I../ginac -DIN_GINAC -o gcc/derivative.o derivative.cpp g++ -o derivative gcc/derivative.o ../ginac/.libs/libginac.a /usr/local/lib/libcln.a -ldl ../ginac/.libs/libginac.a(parser.o): In function `_ZNSt16invalid_argumentD1Ev': /home/Owner/technical/ginac-1.6.2/ginac/parser/parser.h:46: multiple definition of `GiNaC::container<std::list>::info(unsigned int) const' ../ginac/.libs/libginac.a(lst.o):/usr/lib/gcc/i686-pc-cygwin/3.4.4/include/c++/bits/list.tcc:(.text+0x0): first defined here collect2: ld returned 1 exit status It is beyond my current abilities to sort out this problem.
Could you please try this patch: diff --git a/ginac/lst.cpp b/ginac/lst.cpp index a2b2613..845750e 100644 --- a/ginac/lst.cpp +++ b/ginac/lst.cpp @@ -29,15 +29,6 @@ template <> GINAC_IMPLEMENT_REGISTERED_CLASS_OPT_T(lst, basic, print_func<print_context>(&lst::do_print). print_func<print_tree>(&lst::do_print_tree)) -/** Specialization of container::info() for lst. */ -template <> bool lst::info(unsigned inf) const -{ - if (inf == info_flags::list) - return true; - else - return inherited::info(inf); -} - GINAC_BIND_UNARCHIVER(lst); } // namespace GiNaC diff --git a/ginac/lst.h b/ginac/lst.h index 6e06b76..007d1bd 100644 --- a/ginac/lst.h +++ b/ginac/lst.h @@ -40,8 +40,15 @@ template<> inline char lst::get_open_delim() { return '{'; } /** Specialization of container::get_close_delim() for lst. */ template<> inline char lst::get_close_delim() { return '}'; } -// defined in lst.cpp -template<> bool lst::info(unsigned inf) const; +/** Specialization of container::info() for lst. */ +template<> inline bool lst::info(unsigned inf) const +{ + if (inf == info_flags::list) + return true; + else + return inherited::info(inf); +} + GINAC_DECLARE_UNARCHIVER(lst); } // namespace GiNaC Best regards, Alexei