Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
C/C++ - Undefined reference to... perché?
Forum - C/C++ - Undefined reference to... perché? - Pagina 2

Pagine: [ 1 2 ] Precedente | Prossimo
Avatar
Lego86 (Member)
Rookie


Messaggi: 30
Iscritto: 04/10/2008

Segnala al moderatore
Postato alle 20:42
Martedė, 02/10/2012
-include sources.mk
Codice sorgente - presumibilmente C/C++

  1. ################################################################################
  2. # Automatically-generated file. Do not edit!
  3. ################################################################################
  4.  
  5. O_SRCS :=
  6. CPP_SRCS :=
  7. C_UPPER_SRCS :=
  8. C_SRCS :=
  9. S_UPPER_SRCS :=
  10. OBJ_SRCS :=
  11. ASM_SRCS :=
  12. CXX_SRCS :=
  13. C++_SRCS :=
  14. CC_SRCS :=
  15. OBJS :=
  16. C++_DEPS :=
  17. C_DEPS :=
  18. CC_DEPS :=
  19. CPP_DEPS :=
  20. EXECUTABLES :=
  21. CXX_DEPS :=
  22. C_UPPER_DEPS :=
  23.  
  24. # Every subdirectory with source files must be described here
  25. SUBDIRS := \
  26. src \



-include objects.mk
Codice sorgente - presumibilmente C/C++

  1. ################################################################################
  2. # Automatically-generated file. Do not edit!
  3. ################################################################################
  4.  
  5. USER_OBJS :=
  6.  
  7. LIBS :=



Questi invece:
-include src/subdir.mk
-include subdir.mk

non li vedo fra i files del progetto...

PM Quote
Avatar
pierotofy (Admin)
Guru^2


Messaggi: 6230
Iscritto: 04/12/2003

Segnala al moderatore
Postato alle 22:45
Martedė, 02/10/2012
Il fatto che src/subdir.mk non esista e' probabilmente il motivo per il quale ricevi l'errore... al suo interno sono specificati i nomi dei files da compilare e da includere nell'eseguibile.

Crea un nuovo progetto C++ da zero, dopodiche' re-importa i files dalla cartella src.


Il mio blog: https://piero.dev
PM Quote
Avatar
Lego86 (Member)
Rookie


Messaggi: 30
Iscritto: 04/10/2008

Segnala al moderatore
Postato alle 15:50
Giovedė, 04/10/2012
Ciao,
ho provato a creare un nuovo progetto da un'altra installazione di Eclipse, su un altro pc: niente, il file non esiste.

Per ora ho risolto mettendo anche l'implementazione negli header.. la cosa che mi sconvolge č che anche il mio professore di programmazione fa cosė! :S

Comunque grazie mille per l'aiuto ;)

PM Quote
Avatar
carlduke (Member)
Pro


Messaggi: 153
Iscritto: 29/01/2011

Segnala al moderatore
Postato alle 21:49
Giovedė, 04/10/2012
Testo quotato

Postato originariamente da Lego86:

Ciao,
ho provato a creare un nuovo progetto da un'altra installazione di Eclipse, su un altro pc: niente, il file non esiste.

Per ora ho risolto mettendo anche l'implementazione negli header.. la cosa che mi sconvolge č che anche il mio professore di programmazione fa cosė! :S

Comunque grazie mille per l'aiuto ;)



teoricamente il linguaggio ti permette di separare l'implementazione dei template dalla dichiarazione, ma in realta'  ogni compilatore ha un modo suo di implementare i template.. nč il compilatore di visual studio, nč gcc supportano la separazione dell'implementazione, percio' sei costretto a implementare tutto nell'header :k:

Ultima modifica effettuata da carlduke il 04/10/2012 alle 21:50
PM Quote
Avatar
Lego86 (Member)
Rookie


Messaggi: 30
Iscritto: 04/10/2008

Segnala al moderatore
Postato alle 16:07
Venerdė, 05/10/2012
<quote>
teoricamente il linguaggio ti permette di separare l'implementazione dei template dalla dichiarazione, ma in realta'  ogni compilatore ha un modo suo di implementare i template.. nč il compilatore di visual studio, nč gcc supportano la separazione dell'implementazione, percio' sei costretto a implementare tutto nell'header :k:
</quote>

Capisco, perō dopo che ti abbiamo tartassato per una vita su quanto sia importante fare questa separazione faceva strano mettere tutto insieme :D

Grazie mille, a presto!

PM Quote
Avatar
pierotofy (Admin)
Guru^2


Messaggi: 6230
Iscritto: 04/12/2003

Segnala al moderatore
Postato alle 17:27
Venerdė, 05/10/2012
Testo quotato

Postato originariamente da carlduke:
teoricamente il linguaggio ti permette di separare l'implementazione dei template dalla dichiarazione, ma in realta'  ogni compilatore ha un modo suo di implementare i template.. nč il compilatore di visual studio, nč gcc supportano la separazione dell'implementazione, percio' sei costretto a implementare tutto nell'header :k:



Eh? :_doubt:

Mettere l'implementazione nell'header e' fondamentalmente sbagliato, non tanto per motivi di design ma per motivi di ottimizzazione. Implementando tutto nell'header il compilatore crea un'unico file oggetto che viene passato poi al linker. Ogni volta che compili il progetto, il compilatore deve andare a ricompilare TUTTO, anche se qualcosa non e' cambiato (perche' tutto e' inserito in un header). Questo non lo noti negli esercizietti universitari, ma lo noterai se sviluppi qualcosa di grande.

Al contrario se si mette l'implementazione nel file cpp e solo la dichiarazione negli header, quei files che non sono modificati e sono gia' stati compilati in file oggetto, possono essere ignorati e linkati alla fine.

Sia Visual Studio che GCC permettono la separazione dell'implementazione dalla dichiarazione. Quello che hai detto e' totalmente falso.

Lego86 sta impostando il progetto Eclipse in maniera sbagliata (che purtroppo non riesco ad aiutare per mancanza di informazioni).


Il mio blog: https://piero.dev
PM Quote
Avatar
carlduke (Member)
Pro


Messaggi: 153
Iscritto: 29/01/2011

Segnala al moderatore
Postato alle 18:48
Venerdė, 05/10/2012
Testo quotato

Postato originariamente da pierotofy:

Testo quotato

Postato originariamente da carlduke:
teoricamente il linguaggio ti permette di separare l'implementazione dei template dalla dichiarazione, ma in realta'  ogni compilatore ha un modo suo di implementare i template.. nč il compilatore di visual studio, nč gcc supportano la separazione dell'implementazione, percio' sei costretto a implementare tutto nell'header :k:



Eh? :_doubt:

Mettere l'implementazione nell'header e' fondamentalmente sbagliato, non tanto per motivi di design ma per motivi di ottimizzazione. Implementando tutto nell'header il compilatore crea un'unico file oggetto che viene passato poi al linker. Ogni volta che compili il progetto, il compilatore deve andare a ricompilare TUTTO, anche se qualcosa non e' cambiato (perche' tutto e' inserito in un header). Questo non lo noti negli esercizietti universitari, ma lo noterai se sviluppi qualcosa di grande.

Al contrario se si mette l'implementazione nel file cpp e solo la dichiarazione negli header, quei files che non sono modificati e sono gia' stati compilati in file oggetto, possono essere ignorati e linkati alla fine.

Sia Visual Studio che GCC permettono la separazione dell'implementazione dalla dichiarazione. Quello che hai detto e' totalmente falso.

Lego86 sta impostando il progetto Eclipse in maniera sbagliata (che purtroppo non riesco ad aiutare per mancanza di informazioni).



guarda che mi riferivo solo ai metodi template ;)

PM Quote
Avatar
pierotofy (Admin)
Guru^2


Messaggi: 6230
Iscritto: 04/12/2003

Segnala al moderatore
Postato alle 20:27
Venerdė, 05/10/2012
Oh.. chiedo perdono. Non avevo notato che il codice aveva templates.

In questo caso si, l'implementazione dev'essere nell'header. http://stackoverflow.com/questions/8662517/do-template-cla ...


Il mio blog: https://piero.dev
PM Quote
Pagine: [ 1 2 ] Precedente | Prossimo