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
codice:
#include <iostream>
#include "stack.h"
using namespace std;
int main()
{
// richiama le funzioni definite in stack.h
return 0;
}
stack.h contiene la definizione della classe Stack
codice:
#ifndef STACK_H
#define STACK_H
class Stack
{
public:
...
...
private:
...
...
};
#endif
e per finire in stack.C ci sono le definizione delle funzioni membro di Stack
codice:
#include <iostream>
#include "stack.h"
using namespace std;
...
...
...
per compilarli faccio così
codice:
$ g++ -c main.C
$ g++ -c stack.C
e fin qua non ho problemi e ottengo i due file main.o e stack.o poi per creare l'eseguibile uso il comando
codice:
g++ main.o stack.o
che mi restituisce l'errore
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
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?!?