I suspect it may have something to do with the compiler - you’re probably using clang now, while the previous version of Gecode was compiled with gcc. Anyway, I just built the framework with the current trunk and clang, and everything seems to work. The new packages should be up in a couple of days.
Cheers, Guido On 4 Nov 2013, at 8:47 pm, Torsten Anders <torsten.and...@beds.ac.uk> wrote: > Thanks a lot! So, I understand in the meantime I have to use the command > line. > > Best wishes, > Torsten > > On 3 Nov 2013, at 23:01, Guido Tack <t...@gecode.org> wrote: > >> The linker problems in your second example can be fixed by using clang++ >> instead of clang (so that the standard C++ library gets linked). However I >> can reproduce the linker issue related to the branch function, and I >> currently don’t know what the problem might be. We’re preparing a new >> release at the moment, and I’ll try to get this fixed as soon as possible. >> >> Cheers, >> Guido >> >> On 4 Nov 2013, at 9:29 am, Torsten Anders <torsten.and...@beds.ac.uk> wrote: >> >>> Dear Guido, >>> >>> Thanks a lot for your help! After removing /usr/local/gecode (ignored by >>> uninstall.sh -- likely too old), I could compile and run >>> send-more-money.cpp successfully with g++ at the command line as described >>> in the tutorial. Great! >>> >>> However, I would like to use Gecode with an IDE. I tried configuring Xcode >>> as described in your tutorial, but still ran into linking problems. I added >>> the geocode framework (not shown in the list, had to directly move to the >>> path /Library/Frameworks/gecode.framework. For Xcode, the Gecode tutorial >>> recommends "You may have to edit your project settings to choose Mac OS >>> 10.6 as the base SDK." With the current version Xcode 5.01 that is not >>> possible anymore. Anyway, regardless whether or not it is set to my system >>> 10.8, I get linker errors from clang. >>> >>> Undefined symbols for architecture x86_64: >>> "Gecode::branch(Gecode::Home, Gecode::IntVarArgs const&, >>> Gecode::IntVarBranch, Gecode::IntValBranch, bool (*)(Gecode::Space const&, >>> Gecode::IntVar, int), void (*)(Gecode::Space const&, Gecode::BrancherHandle >>> const&, unsigned int, Gecode::IntVar, int, int const&, >>> std::__1::basic_ostream<char, std::__1::char_traits<char> >&))", referenced >>> from: >>> SendMoreMoney::SendMoreMoney() in main.o >>> ld: symbol(s) not found for architecture x86_64 >>> >>> With Eclipse I have similar problems. >>> >>> To better understand the problem I tried command line calls for clang with >>> the same arguments as for g++ given in your tutorial, and got the more >>> detailed error message below. Not sure whether my flags are exactly the >>> same in Xcode as well, but the error looks at least similar. >>> >>> Any idea what I could be missing? Thanks a lot! >>> >>> Best wishes, >>> Torsten >>> >>> >>> The following silently results in an *.o file. >>> >>> $ clang -O3 -c send-more-money.cpp >>> >>> $ clang -framework gecode -o send-more-money send-more-money.cpp >>> Undefined symbols for architecture x86_64: >>> "std::basic_ostringstream<char, std::char_traits<char>, >>> std::allocator<char> >::str() const", referenced from: >>> std::basic_ostream<char, std::char_traits<char> >& >>> Gecode::operator<<<char, std::char_traits<char>, >>> Gecode::IntVar>(std::basic_ostream<char, std::char_traits<char> >&, >>> Gecode::VarArray<Gecode::IntVar> const&) in send-more-money-cyceYe.o >>> std::basic_ostream<char, std::char_traits<char> >& >>> Gecode::Int::print_view<char, std::char_traits<char>, >>> Gecode::Int::IntView>(std::basic_ostream<char, std::char_traits<char> >&, >>> Gecode::Int::IntView const&) in send-more-money-cyceYe.o >>> "std::ostream::operator<<(std::ostream& (*)(std::ostream&))", referenced >>> from: >>> SendMoreMoney::print() const in send-more-money-cyceYe.o >>> "std::ostream::operator<<(int)", referenced from: >>> std::basic_ostream<char, std::char_traits<char> >& >>> Gecode::Int::print_view<char, std::char_traits<char>, >>> Gecode::Int::IntView>(std::basic_ostream<char, std::char_traits<char> >&, >>> Gecode::Int::IntView const&) in send-more-money-cyceYe.o >>> "std::basic_string<char, std::char_traits<char>, std::allocator<char> >>> >::~basic_string()", referenced from: >>> std::basic_ostream<char, std::char_traits<char> >& >>> Gecode::operator<<<char, std::char_traits<char>, >>> Gecode::IntVar>(std::basic_ostream<char, std::char_traits<char> >&, >>> Gecode::VarArray<Gecode::IntVar> const&) in send-more-money-cyceYe.o >>> std::basic_ostream<char, std::char_traits<char> >& >>> Gecode::Int::print_view<char, std::char_traits<char>, >>> Gecode::Int::IntView>(std::basic_ostream<char, std::char_traits<char> >&, >>> Gecode::Int::IntView const&) in send-more-money-cyceYe.o >>> "std::basic_ostringstream<char, std::char_traits<char>, >>> std::allocator<char> >::basic_ostringstream(std::_Ios_Openmode)", >>> referenced from: >>> std::basic_ostream<char, std::char_traits<char> >& >>> Gecode::operator<<<char, std::char_traits<char>, >>> Gecode::IntVar>(std::basic_ostream<char, std::char_traits<char> >&, >>> Gecode::VarArray<Gecode::IntVar> const&) in send-more-money-cyceYe.o >>> std::basic_ostream<char, std::char_traits<char> >& >>> Gecode::Int::print_view<char, std::char_traits<char>, >>> Gecode::Int::IntView>(std::basic_ostream<char, std::char_traits<char> >&, >>> Gecode::Int::IntView const&) in send-more-money-cyceYe.o >>> "std::basic_ostringstream<char, std::char_traits<char>, >>> std::allocator<char> >::~basic_ostringstream()", referenced from: >>> std::basic_ostream<char, std::char_traits<char> >& >>> Gecode::operator<<<char, std::char_traits<char>, >>> Gecode::IntVar>(std::basic_ostream<char, std::char_traits<char> >&, >>> Gecode::VarArray<Gecode::IntVar> const&) in send-more-money-cyceYe.o >>> std::basic_ostream<char, std::char_traits<char> >& >>> Gecode::Int::print_view<char, std::char_traits<char>, >>> Gecode::Int::IntView>(std::basic_ostream<char, std::char_traits<char> >&, >>> Gecode::Int::IntView const&) in send-more-money-cyceYe.o >>> "std::ios_base::Init::Init()", referenced from: >>> ___cxx_global_var_init in send-more-money-cyceYe.o >>> "std::ios_base::Init::~Init()", referenced from: >>> ___cxx_global_var_init in send-more-money-cyceYe.o >>> "std::basic_ios<char, std::char_traits<char> >>> >::copyfmt(std::basic_ios<char, std::char_traits<char> > const&)", >>> referenced from: >>> std::basic_ostream<char, std::char_traits<char> >& >>> Gecode::operator<<<char, std::char_traits<char>, >>> Gecode::IntVar>(std::basic_ostream<char, std::char_traits<char> >&, >>> Gecode::VarArray<Gecode::IntVar> const&) in send-more-money-cyceYe.o >>> std::basic_ostream<char, std::char_traits<char> >& >>> Gecode::Int::print_view<char, std::char_traits<char>, >>> Gecode::Int::IntView>(std::basic_ostream<char, std::char_traits<char> >&, >>> Gecode::Int::IntView const&) in send-more-money-cyceYe.o >>> "std::exception::~exception()", referenced from: >>> Gecode::Exception::~Exception() in send-more-money-cyceYe.o >>> "std::cout", referenced from: >>> SendMoreMoney::print() const in send-more-money-cyceYe.o >>> "std::basic_ostream<char, std::char_traits<char> >& std::endl<char, >>> std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >>> >&)", referenced from: >>> SendMoreMoney::print() const in send-more-money-cyceYe.o >>> "std::terminate()", referenced from: >>> ___clang_call_terminate in send-more-money-cyceYe.o >>> "std::basic_ostream<char, std::char_traits<char> >& >>> std::operator<<<std::char_traits<char> >(std::basic_ostream<char, >>> std::char_traits<char> >&, char const*)", referenced from: >>> std::basic_ostream<char, std::char_traits<char> >& >>> Gecode::operator<<<char, std::char_traits<char>, >>> Gecode::IntVar>(std::basic_ostream<char, std::char_traits<char> >&, >>> Gecode::VarArray<Gecode::IntVar> const&) in send-more-money-cyceYe.o >>> std::basic_ostream<char, std::char_traits<char> >& >>> Gecode::Int::print_view<char, std::char_traits<char>, >>> Gecode::Int::IntView>(std::basic_ostream<char, std::char_traits<char> >&, >>> Gecode::Int::IntView const&) in send-more-money-cyceYe.o >>> "std::basic_ostream<char, std::char_traits<char> >& >>> std::operator<<<std::char_traits<char> >(std::basic_ostream<char, >>> std::char_traits<char> >&, char)", referenced from: >>> std::basic_ostream<char, std::char_traits<char> >& >>> Gecode::operator<<<char, std::char_traits<char>, >>> Gecode::IntVar>(std::basic_ostream<char, std::char_traits<char> >&, >>> Gecode::VarArray<Gecode::IntVar> const&) in send-more-money-cyceYe.o >>> std::basic_ostream<char, std::char_traits<char> >& >>> Gecode::Int::print_view<char, std::char_traits<char>, >>> Gecode::Int::IntView>(std::basic_ostream<char, std::char_traits<char> >&, >>> Gecode::Int::IntView const&) in send-more-money-cyceYe.o >>> "std::basic_ostream<char, std::char_traits<char> >& std::operator<<<char, >>> std::char_traits<char>, std::allocator<char> >(std::basic_ostream<char, >>> std::char_traits<char> >&, std::basic_string<char, std::char_traits<char>, >>> std::allocator<char> > const&)", referenced from: >>> std::basic_ostream<char, std::char_traits<char> >& >>> Gecode::operator<<<char, std::char_traits<char>, >>> Gecode::IntVar>(std::basic_ostream<char, std::char_traits<char> >&, >>> Gecode::VarArray<Gecode::IntVar> const&) in send-more-money-cyceYe.o >>> std::basic_ostream<char, std::char_traits<char> >& >>> Gecode::Int::print_view<char, std::char_traits<char>, >>> Gecode::Int::IntView>(std::basic_ostream<char, std::char_traits<char> >&, >>> Gecode::Int::IntView const&) in send-more-money-cyceYe.o >>> "vtable for __cxxabiv1::__class_type_info", referenced from: >>> typeinfo for Gecode::SharedHandle::Object in send-more-money-cyceYe.o >>> typeinfo for Gecode::ActorLink in send-more-money-cyceYe.o >>> typeinfo for Gecode::Choice in send-more-money-cyceYe.o >>> typeinfo for Gecode::Search::Stop in send-more-money-cyceYe.o >>> typeinfo for Gecode::Search::Cutoff in send-more-money-cyceYe.o >>> NOTE: a missing vtable usually means the first non-inline virtual member >>> function has no definition. >>> "vtable for __cxxabiv1::__si_class_type_info", referenced from: >>> typeinfo for Gecode::Rnd::IMP in send-more-money-cyceYe.o >>> typeinfo for Gecode::PosChoice in send-more-money-cyceYe.o >>> typeinfo for Gecode::DFA::DFAI in send-more-money-cyceYe.o >>> typeinfo for SendMoreMoney in send-more-money-cyceYe.o >>> typeinfo for Gecode::MemoryExhausted in send-more-money-cyceYe.o >>> NOTE: a missing vtable usually means the first non-inline virtual member >>> function has no definition. >>> "vtable for __cxxabiv1::__vmi_class_type_info", referenced from: >>> typeinfo for Gecode::Actor in send-more-money-cyceYe.o >>> NOTE: a missing vtable usually means the first non-inline virtual member >>> function has no definition. >>> "operator delete(void*)", referenced from: >>> Gecode::MemoryExhausted::~MemoryExhausted() in send-more-money-cyceYe.o >>> "___cxa_allocate_exception", referenced from: >>> _main in send-more-money-cyceYe.o >>> SendMoreMoney::SendMoreMoney() in send-more-money-cyceYe.o >>> SendMoreMoney::copy(bool) in send-more-money-cyceYe.o >>> Gecode::IntVarArgs::IntVarArgs(int) in send-more-money-cyceYe.o >>> >>> Gecode::VarArgArray<Gecode::IntVar>::VarArgArray(Gecode::VarArray<Gecode::IntVar> >>> const&) in send-more-money-cyceYe.o >>> "___cxa_begin_catch", referenced from: >>> ___clang_call_terminate in send-more-money-cyceYe.o >>> "___cxa_free_exception", referenced from: >>> _main in send-more-money-cyceYe.o >>> SendMoreMoney::SendMoreMoney() in send-more-money-cyceYe.o >>> SendMoreMoney::copy(bool) in send-more-money-cyceYe.o >>> Gecode::IntVarArgs::IntVarArgs(int) in send-more-money-cyceYe.o >>> >>> Gecode::VarArgArray<Gecode::IntVar>::VarArgArray(Gecode::VarArray<Gecode::IntVar> >>> const&) in send-more-money-cyceYe.o >>> "___cxa_pure_virtual", referenced from: >>> vtable for Gecode::SharedHandle::Object in send-more-money-cyceYe.o >>> vtable for Gecode::Actor in send-more-money-cyceYe.o >>> vtable for Gecode::Choice in send-more-money-cyceYe.o >>> vtable for Gecode::Search::Stop in send-more-money-cyceYe.o >>> vtable for Gecode::Search::Cutoff in send-more-money-cyceYe.o >>> "___cxa_throw", referenced from: >>> _main in send-more-money-cyceYe.o >>> SendMoreMoney::SendMoreMoney() in send-more-money-cyceYe.o >>> SendMoreMoney::copy(bool) in send-more-money-cyceYe.o >>> Gecode::IntVarArgs::IntVarArgs(int) in send-more-money-cyceYe.o >>> >>> Gecode::VarArgArray<Gecode::IntVar>::VarArgArray(Gecode::VarArray<Gecode::IntVar> >>> const&) in send-more-money-cyceYe.o >>> "___dynamic_cast", referenced from: >>> _main in send-more-money-cyceYe.o >>> "___gxx_personality_v0", referenced from: >>> _main in send-more-money-cyceYe.o >>> Gecode::SharedHandle::Object::~Object() in send-more-money-cyceYe.o >>> Gecode::Rnd::IMP::~IMP() in send-more-money-cyceYe.o >>> Gecode::DFA::DFAI::~DFAI() in send-more-money-cyceYe.o >>> Gecode::DFA::DFAI::~DFAI() in send-more-money-cyceYe.o >>> Gecode::PosChoice::~PosChoice() in send-more-money-cyceYe.o >>> std::basic_ostream<char, std::char_traits<char> >& >>> Gecode::operator<<<char, std::char_traits<char>, >>> Gecode::IntVar>(std::basic_ostream<char, std::char_traits<char> >&, >>> Gecode::VarArray<Gecode::IntVar> const&) in send-more-money-cyceYe.o >>> ... >>> ld: symbol(s) not found for architecture x86_64 >>> clang: error: linker command failed with exit code 1 (use -v to see >>> invocation) >>> Torstens-MacBook-Pro:tmp torsten$ >>> >>> >>> >>> >>> Undefined symbols for architecture x86_64: >>> "Gecode::branch(Gecode::Home, Gecode::IntVarArgs const&, >>> Gecode::IntVarBranch, Gecode::IntValBranch, bool (*)(Gecode::Space const&, >>> Gecode::IntVar, int), void (*)(Gecode::Space const&, Gecode::BrancherHandle >>> const&, unsigned int, Gecode::IntVar, int, int const&, >>> std::__1::basic_ostream<char, std::__1::char_traits<char> >&))", referenced >>> from: >>> SendMoreMoney::SendMoreMoney() in main.o >>> ld: symbol(s) not found for architecture x86_64 >>> clang: error: linker command failed with exit code 1 (use -v to see >>> invocation) >>> >>> >>> >>> >>> >>> On 2 Nov 2013, at 23:20, Guido Tack <t...@gecode.org> >>> wrote: >>> >>>> Hi Torsten, >>>> >>>> you seem to have an older version of Gecode installed in /usr/local >>>> (that's what the clang error messages point to). >>>> >>>> The 35 is the "library version", which is simply incremented with each >>>> release and doesn't follow the major.minor.patch scheme. >>>> >>>> Cheers, >>>> Guido >>>> >>>> On 3 Nov 2013, at 4:11 am, Torsten Anders <torsten.and...@beds.ac.uk> >>>> wrote: >>>> >>>>> On 2 Nov 2013, at 09:13, Torsten Anders <torsten.and...@beds.ac.uk> wrote: >>>>>> Dear Gecoders, >>>>>> >>>>>> I am trying to run some ready-made Gecode examples on a Mac without >>>>>> success. For example, with the first example from the tutorial >>>>>> (http://www.gecode.org/doc/4.2.0/MPG/send-more-money.cpp) in run into >>>>>> several errors, for example, >>>>>> >>>>>> 'INT_VAL_SPLIT_MIN' cannot be used as a function >>>>>> 'INT_VAR_SIZE_MIN' cannot be used as a function >>>>>> >>>>>> As these errors appear for several examples, it appears to me there is >>>>>> something fundamentally wrong. This might well be some installation >>>>>> error on my part. Nevertheless, help is appreciated -- I simply do not >>>>>> know where to start addressing such a problem. >>>>>> >>>>>> BTW: I just installed Gecode version 4.2 (binaries Gecode-4.2.0.dmg) on >>>>>> my Mac, after uninstalling some older version. I was surprised to find >>>>>> that /Library/Frameworks/gecode.framework/Versions/ contains a folder >>>>>> named "35" -- I would have expected it to be named "42", for version >>>>>> 4.2, but that could of course be simply a wrong guess on my part. >>>>>> >>>>>> Best wishes, >>>>>> Torsten >>>>> >>>>> >>>>> I tried to better isolate the problem. Both g++ (gcc) 4.2.1 and clang 5.0 >>>>> report problems with the example send-more-money.cpp >>>>> (http://www.gecode.org/doc/4.2.0/MPG/send-more-money.cpp), but the errors >>>>> differ. The details are below. >>>>> >>>>> What am I missing? >>>>> >>>>> Best wishes, >>>>> Torsten >>>>> >>>>> $ g++ -O3 -c send-more-money.cpp >>>>> send-more-money.cpp: In constructor ‘SendMoreMoney::SendMoreMoney()’: >>>>> send-more-money.cpp:55: error: ‘INT_VAR_SIZE_MIN’ cannot be used as a >>>>> function >>>>> send-more-money.cpp:55: error: ‘INT_VAL_MIN’ cannot be used as a function >>>>> >>>>> $ g++ --version >>>>> i686-apple-darwin11-llvm-g++-4.2 (GCC) 4.2.1 (Based on Apple Inc. build >>>>> 5658) (LLVM build 2336.11.00) >>>>> Copyright (C) 2007 Free Software Foundation, Inc. >>>>> >>>>> >>>>> $ >>>>> /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang >>>>> -O3 -c send-more-money.cpp >>>>> In file included from send-more-money.cpp:28: >>>>> In file included from /usr/local/include/gecode/int.hh:50: >>>>> In file included from /usr/local/include/gecode/iter.hh:97: >>>>> /usr/local/include/gecode/iter/ranges-scale.hpp:197:27: error: reference >>>>> to >>>>> non-static member function must be called; did you mean to call it with no >>>>> arguments? >>>>> static_cast<UnsVal>(max - min + 1); >>>>> ^~~ >>>>> /usr/local/include/gecode/iter/ranges-scale.hpp:197:33: error: reference >>>>> to >>>>> non-static member function must be called; did you mean to call it with no >>>>> arguments? >>>>> static_cast<UnsVal>(max - min + 1); >>>>> ^~~ >>>>> send-more-money.cpp:55:42: error: called object type 'int' is not a >>>>> function or >>>>> function pointer >>>>> branch(*this, l, INT_VAR_SIZE_MIN(), INT_VAL_MIN()); >>>>> ~~~~~~~~~~~~~~~~^ >>>>> 3 errors generated. >>>>> >>>>> $ >>>>> /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang >>>>> --version >>>>> Apple LLVM version 5.0 (clang-500.2.79) (based on LLVM 3.3svn) >>>>> >>>>> >>>>>> -- >>>>>> Dr Torsten Anders >>>>>> Course Leader, Music Technology >>>>>> University of Bedfordshire >>>>>> Park Square, Room A315 >>>>>> http://www.torsten-anders.de >>>>> >>>>> _______________________________________________ >>>>> Gecode users mailing list >>>>> users@gecode.org >>>>> https://www.gecode.org/mailman/listinfo/gecode-users >>>> >>> >>> >>> _______________________________________________ >>> Gecode users mailing list >>> users@gecode.org >>> https://www.gecode.org/mailman/listinfo/gecode-users >> > > > _______________________________________________ > Gecode users mailing list > users@gecode.org > https://www.gecode.org/mailman/listinfo/gecode-users _______________________________________________ Gecode users mailing list users@gecode.org https://www.gecode.org/mailman/listinfo/gecode-users