dunque... sto cercando di capire come fare a compilare un programma diviso su più file sorgente con gcc... io ho tr3 file che sono main.C stack.C e stack.h...
main.C contiene la funzione main e è così fatto
stack.h contiene la definizione della classe Stackcodice:#include <iostream> #include "stack.h" using namespace std; int main() { // richiama le funzioni definite in stack.h return 0; }
e per finire in stack.C ci sono le definizione delle funzioni membro di Stackcodice:#ifndef STACK_H #define STACK_H class Stack { public: ... ... private: ... ... }; #endif
per compilarli faccio cosìcodice:#include <iostream> #include "stack.h" using namespace std; ... ... ...
e fin qua non ho problemi e ottengo i due file main.o e stack.o poi per creare l'eseguibile uso il comandocodice:$ g++ -c main.C $ g++ -c stack.C
che mi restituisce l'errorecodice:g++ main.o stack.o
e ovviamente non crea l'eseguibile... quello che non mi riesce di capire è... dov'è l'errore?!? ovvero ho sbagliato qualcosa nella strutturazione dei file o ho sbagliato coi comandi di compilazione?!?codice:main.o(.text+0x17): In function `main': : undefined reference to `Stack<int, (int)10>::Stack[in-charge]()' main.o(.text+0x2a): In function `main': : undefined reference to `Stack<int, (int)10>::push(int)' main.o(.text+0x35): In function `main': : undefined reference to `Stack<int, (int)10>::display() const' collect2: ld returned 1 exit status

Rispondi quotando