Archiv verlassen und diese Seite im Standarddesign anzeigen : Problem mit makefile
pajofego
2006-05-02, 23:19:55
Hallo miteinander,
ich versuche gerade Code mit dem mingw gcc zu kompilieren. Dazu gibt es eine Fehlermeldung:
Mesh_Mode.h 47:error: there are no arguments to 'size' that depend on a template parameter, so a declaration of 'First' must be available:
error: (if you use '-fpermissive', G++ will accept your code, but allowing the use of an undeclared name is deprecated)
Daraufhin habe ich im makefile die flags wie in der Fehlermeldung beschrieben mit fpermissive erweitert:
CC = gcc
CFLAGS = -Wall -O3 -fpermissive
LDFLAGS =
CXX = g++
CXXFLAGS = -O3 -fpermissive
AR = ar
LIBOPT = rscv
Leider will er das auch nicht kompillieren und bringt weiterhin einen error anstatt eines warnings!
Hat einer einen Tipp für mich?
Danke,
Gruß
pajofego
Was bringt er denn jetzt für einen Error?
Ach so: Lass mich raten, du benützt GCC 4?
pajofego
2006-05-02, 23:50:01
Coda[/POST]']Was bringt er denn jetzt für einen Error?
Ach so: Lass mich raten, du benützt GCC 4?
Nein, da ändert sich gar nichts...die Fehler bleiben gleich :confused:
Die Version ist gcc 3.4.2 (mingw-special)
Wird der Compiler denn auch mit der Flag aufgerufen? (Das siehst du normal wenn das Makefile durchläuft)
pajofego
2006-05-03, 00:08:12
Coda[/POST]']Wird der Compiler denn auch mit der Flag aufgerufen? (Das siehst du normal wenn das Makefile durchläuft)
mmmh guter Hinweis...ich glaube nicht! Muss das nochmal genauer anschauen.
pajofego
2006-05-03, 00:15:12
Hi,
ich konnte im output-Fenster keinen Hinweis finden, die zeigen, dass er den Flag mitnimmt. Unten habe ich das makefile drangehängt, welches ich an einigen Stellen von Hand selbst geändert habe. Hast du eine Idee wo man noch rumschrauben könnte.
Danke,
Gruß
pajofego
CC = gcc
CFLAGS = -Wall -O3 -fpermissive
LDFLAGS = -fpermissive
CXX = g++
CXXFLAGS = -O3 -fpermissive
AR = ar
LIBOPT = rscv
HEADERS = gid_mesh_parser.tab.cc gid_mesh_parser.tab.hh
OBJ = gid_mesh_reader.o gid_mesh_scanner.o
INCPATH = -I../mesh_lib
LIBPATH = -L../mesh_lib
LIBS = -lMesh
.SUFFIXES:
.SUFFIXES: .c .cc .cxx .o
.c.o: $@ $(HEADERS); $(CC) $(CFLAGS) $(INCPATH) -c $<
.cc.o: $@ $(HEADERS); $(CXX) $(CXXFLAGS) $(INCPATH) -c $<
.cxx.o: $@ $(HEADERS); $(CXX) $(CXXFLAGS) $(INCPATH) -c $<
ZIEL = gid_mesh_reader
all: $(ZIEL)
../mesh_lib/libMesh.a:
cd ../mesh_lib; mingw32-make.exe
gid_mesh_reader: $(OBJ) ../mesh_lib/libMesh.a
$(CXX) $(LDFLAGS) -o $@ $(LIBPATH) $(OBJ) $(LIBS)
install: $(ZIEL)
cp $(ZIEL) ../bin
clean:
rm -f $(ZIEL) $(OBJ)
Kannst du den Output vom Make-Lauf auch noch anhängen?
Wie wäre es mit dem Code, der den Fehler erzeugt?
Ich dachte er will irgend eine Library kompilieren. Die würde er ja schlecht fixen können...
pajofego
2006-05-03, 18:10:36
Hi der Code ist nicht von mir! Ist mir zum compilieren gegeben worden. Ich habe die besagten Stellen fett markiert. Von templates habe ich noch keine Ahnung.
Gruß
pajofego
template<class C> class Node_Vektor:public vector<C>{
public:
typename Node_Vektor<C>::reference operator[]
(typename Node_Vektor<C>::size_type n) {
if(n<=0) throw out_of_range("Node_Vektor: Index zu klein!\n");
if(n>size()) throw out_of_range("Node_Vektor: Index zu groß!\n");
return vector<C>::operator[](n-1);
}
typename Node_Vektor<C>::const_reference operator[]
(typename Node_Vektor<C>::size_type n) const{
if(n<=0) throw out_of_range("Node_Vektor: Index zu klein!\n");
if(n>size()) throw out_of_range("Node_Vektor: Index zu groß!\n");
return vector<C>::operator[](n-1);
}
friend istream& operator>> <C> (istream &,Node_Vektor<C>&);
friend ostream& operator<< <C> (ostream &,const Node_Vektor<C>&);
};
pajofego
2006-05-04, 18:08:03
Ich wollte nochmal freundlich nachfragen, ob mir hier jemand bei dem oben geposteten Code helfen könnte.
Der Fehler:
Mesh_Mode.h 47:error: there are no arguments to 'size' that depend on a template parameter, so a declaration of 'First' must be available:
error: (if you use '-fpermissive', G++ will accept your code, but allowing the use of an undeclared name is deprecated)
Ist immer noch vorhanden.
Danke
Gruß
pajofego
Schreib mal this->size() statt size().
pajofego
2006-05-04, 23:00:23
Hi Xmas,
das hat funktioniert! Jetzt versuche ich andere Teile zu compilieren und da steigt der compiler ebenso aus...! :mad:
Mensch das ist ja voll der Krampf wenn der Compiler alten Code nicht so einfach schlucken will!
Danke erst einmal...!
Gruß
pajofego
vBulletin®, Copyright ©2000-2025, Jelsoft Enterprises Ltd.