Re: Probleme beim Bauen eines Programms mit der libstdc++
Hallo Christian,
On Mon, Jun 13, 2011 at 02:29:23PM +0200, Christian wrote:
> Hallo allerseits,
>
> ich versuche gerade auf Debian Squeeze ein Paket (hqp auf sourceforge) zu
> bauen.
>
> Wenn ich das Bauen will, bekomme ich irgendwann einen Fehler (s.u.). Soweit
> ich das erkennen kann, liegt ein Problem vor, dass gewisse Makros nicht
> richtig gefunden werden/falsch zusammenarbeiten.
>
> Kann mir jemand einen Tipp geben, was hier falsch läuft?
> Lt. Programmierer des Programms liegt das an meinem lokalen System.
>
> Danke
> Christian
>
> Hier die Ausgabe von make/g++. Ich hab noch bei http://pastebin.com/bVf0qszw
> eine ausführliche Version gepastet.
>
> > g++ -c -O2 -fPIC -I. -I.. -I"/usr/include/tcl8.4" -I../iftcl -I../hqp
> > -I../adol-c/adol-c -I../hxi -I"/opt/matlab" -I"/opt/matlab/extern/include"
> > -DVERSION=\"1.9.5\" -DUSE_TCL_STUBS=1 -DHXI_WITH_MEX=1 -DOMU_WITH_ADOLC=1
> > -DOMU_WITH_FORTRAN=1 Hqp_Omuses.C In file included from
> > /usr/include/c++/4.4/bits/char_traits.h:41,
> >
> > from /usr/include/c++/4.4/ios:41,
> > from /usr/include/c++/4.4/ostream:40,
> > from /usr/include/c++/4.4/iostream:40,
> > from ../adol-c/adol-c/adolc/adouble.h:55,
> > from Omu_Program.h:32,
> >
> > from Hqp_Omuses.C:40:
> > /usr/include/c++/4.4/bits/stl_algobase.h:232:56: error: macro "min" passed
> > 3 arguments, but takes just 2
Ich habe es mir nur kurz angeschaut, aber ich denke, es liegt am
Programm: in der Datei meschach/matdef.h definiert er ein
Präprozessor-Macro "min", das 2 parameter erwartet.
Und der Compiler fliegt jetzt raus, wenn er Zeile 232 von
/usr/include/c++/4.4/bits/stl_algobase.h parst -- in der Zeile wird die
Funktion "std::min" mit 3 Parametern definiert.
Es ist aber in C++ NICHT möglich, eine Funktion und ein
Präprozessor-Makro mit dem gleichen Namen zu haben -- min(a,b) als Makro
und std::min(a,b,comp) können NICHT überladen werden.
Ich denke, man müsste das Programm korrigieren -- am besten, in dem man
das Makro "min(a,b)" in meschach/matdef.h einfach auskommentiert, und
stattdessen std::min(a,b) verwendet (das ist mit 2 Parametern auch
bereits in stl_algobase definiert :-))
Axel
>
Reply to: