Salut à tous.![]()
Je développe des programmen en C++ sur Solaris (SUN).
J'utilise aussi une librairie d'ILOG CPLEX qui permet d'implémenter et résoudre des problèmes d'équations linéaires.
J'ai créer des classes "Noeud", "LienPhys" et "PHI" sachant qu' un Objet LienPhys possède 2 Noeud.
Dans mon programe principal "Exo15.cpp" je fais:
Mais quand je compile en lançant le Makefile:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29 #include "Noeud.h" #include "LienPhys.h" #include "PHI.h" int main(int argc, char **argv) { ... std::vector <Noeud> Vect_N; std::vector <LienPhys> Vect_L; //Construction du vecteur de Noeud for (int i = 0; i < n; i++) { //Création dez Noeuds Noeud N_Obj(i, 0, 0, env); Vect_N.push_back(N_Obj); } //Affichage de tous les Noeuds for (int i = 0; i < n; i++) { Vect_N[i].afficher(); } LienPhys li(0,200,Noeud(Vect_N[1]),Noeud(Vect_N[2]),env); ... }
j'obtiens des erreurs:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38 #Makefile SYSTEM = ultrasparc32_8_6.2 LIBFORMAT = static_pic_mt CPLEXDIR = /local/cplex91 CONCERTDIR = /local/concert21 REP = /users/rss/eclu8410 CCC = /soft/WorkShop_6.0/SUNWspro/bin/CC CCOPT = -O -xtarget=ultra -xarch=v8plus -DNDEBUG -pto -PIC -DIL_STD CPLEXLIBDIR = $(CPLEXDIR)/lib/$(SYSTEM)/$(LIBFORMAT) CONCERTLIBDIR = $(CONCERTDIR)/lib/$(SYSTEM)/$(LIBFORMAT) CCLNFLAGS = -L$(CPLEXLIBDIR) -lilocplex -lcplex -L$(CONCERTLIBDIR) -lconcert -mt -lm -lsocket -lnsl all: make all_cpp CONCERTINCDIR = $(CONCERTDIR)/include CPLEXINCDIR = $(CPLEXDIR)/include CCFLAGS = $(CCOPT) -I$(CPLEXINCDIR) -I$(CONCERTINCDIR) -I$(REP) CPP_EX = Noeud.o LienPhys.o PHI.o Exo15.o MonExecutable all_cpp: $(CPP_EX) OBJCPP = $(REP)/Exo15.o $(REP)/PHI.o $(REP)/LienPhys.o $(REP)/Noeud.o # ------------------------------------------------------------ #Création de l'exécutable MonExecutable: $(OBJCPP) $(CCC) $(CCFLAGS) $(REP)/Exo15.o -o $(REP)/MonExe $(CCLNFLAGS) # Création des différents *.o à partir des *.cpp Exo15.o:$(REP)/Exo15.cpp $(REP)/PHI.cpp $(REP)/PHI.h $(REP)/LienPhys.cpp $(REP)/LienPhys.h $(REP)/Noeud.cpp $(REP)/Noeud.h $(CCC) -c $(CCFLAGS) $(REP)/Exo15.cpp -o Exo15.o PHI.o: $(REP)/PHI.cpp $(REP)/PHI.h $(REP)/Noeud.cpp $(REP)/Noeud.h $(CCC) -c $(CCFLAGS) $(REP)/PHI.cpp -o PHI.o LienPhys.o: $(REP)/LienPhys.cpp $(REP)/LienPhys.h $(REP)/Noeud.cpp $(REP)/Noeud.h $(CCC) -c $(CCFLAGS) $(REP)/LienPhys.cpp -o LienPhys.o Noeud.o: $(REP)/Noeud.cpp $(REP)/Noeud.h $(CCC) -c $(CCFLAGS) $(REP)/Noeud.cpp -o Noeud.o
Par contre si je modifie mon programme en faisant:/soft/WorkShop_6.0/SUNWspro/bin/CC -c -O -xtarget=ultra -xarch=v8plus -DNDEBUG -pto -PIC -DIL_STD -I/local/cplex91/include -I/local/concert21/include -I/users/rss/eclu8410 /users/rss/eclu8410/Exo15.cpp -o Exo15.o
/soft/WorkShop_6.0/SUNWspro/bin/CC -O -xtarget=ultra -xarch=v8plus -DNDEBUG -pto -PIC -DIL_STD -I/local/cplex91/include -I/local/concert21/include -I/users/rss/eclu8410 /users/rss/eclu8410/Exo15.o -o /users/rss/eclu8410/MonExe -L/local/cplex91/lib/ultrasparc32_8_6.2/static_pic_mt -lilocplex -lcplex -L/local/concert21/lib/ultrasparc32_8_6.2/static_pic_mt -lconcert -mt -lm -lsocket -lnsl
Undefined first referenced
symbol in file
Noeud::Noeud(int,int,bool,IloEnv) /users/rss/eclu8410/Exo15.o
LienPhys::LienPhys(int,int,Noeud,Noeud,IloEnv) /users/rss/eclu8410/Exo15.o
void Noeud::afficher() /users/rss/eclu8410/Exo15.o
Noeud::Noeud(const Noeud&) /users/rss/eclu8410/Exo15.o
ld: fatal: Symbol referencing errors. No output written to /users/rss/eclu8410/MonExe
*** Error code 1
make: Fatal error: Command failed for target `MonExecutable'
Current working directory /users/rss/eclu8410
*** Error code 1
make: Fatal error: Command failed for target `all'
Tout compile correctement !!
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31 #include "Noeud.h" #include "Noeud.cpp" #include "LienPhys.h" #include "LienPhys.cpp" #include "PHI.h" #include "PHI.cpp" int main(int argc, char **argv) { ... std::vector <Noeud> Vect_N; std::vector <LienPhys> Vect_L; //Construction du vecteur de Noeud for (int i = 0; i < n; i++) { //Création dez Noeuds Noeud N_Obj(i, 0, 0, env); Vect_N.push_back(N_Obj); } //Affichage de tous les Noeuds for (int i = 0; i < n; i++) { Vect_N[i].afficher(); } LienPhys li(0,200,Noeud(Vect_N[1]),Noeud(Vect_N[2]),env); ... }![]()
Je pense qu'il manque quelquechose dans mon Makefile.
Quelqu'un peut m'éclairer car je suis pas très fort en Makefile et j'aimerai bien comprendre.
Partager