[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

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: