View Full Version : [C] - [Link Error] undefined reference to ...
Super_Cloud
22-06-2006, 00:07
ho uno strano problema col DevC++....
apro 3 file appartenenti ad un progetto
main.c, sort.c, sort.h
nel main.c rikiamo le funzioni presenti nei sort
nel sort.h ci sono i prototipi delle funzioni
in sort.c ci sono le funzioni vere e proprie
nel main.c e nel sort.c includo il sort.h come libreria
ora, io non l'ho mai fatto, i file sono le soluzioni di esercizi di laboratorio del professore, quindi funzionanti al 100%
però se provo a compilare il DevC++ non me li compila
se compilo il sort.c mi scrive:
[Linker error] undefined reference to `WinMain@16'
ld returned 1 exit status
se compilo il main.c mi scrive:
[Linker error] undefined reference to `insertion_sort'
[Linker error] undefined reference to `selection_sort'
[Linker error] undefined reference to `bubble_sort'
ld returned 1 exit status
insertion_sort, selection_sort e bubble_sort sono le funzioni ke ci sono in sort.c e in sort.h come prototipi
non ho idea di quale sia il problema, ai miei compagni di corso funziona tutto alla perfezione, io invece ottengo questi errori, non so proprio dove sbattere la testa, e tra una settimana ho l'esame, spero ke qualkuno di voi mi sappia aiutare il + presto possibile :mc:
grazie in anticipo
Super_Cloud
22-06-2006, 00:32
forse sbagliavo io
ho aggiunto tutti e tre i file in un progetto e l'ho compilato, me lo compila senza problemi...
però se provo a eseguirlo parte un main.exe, non si apre nessuna finestra e sto main.exe mi ciuccia il 100% di CPU :doh:
lo stesso succede con altri progetti (soluzioni del professore), parte un main.exe, non succede nulla, e la cpu viene sfruttata al 100& dal main.exe, booooh
ho come l'impressione ke sia io ke non sia proprio capace a far ste cose, qualkuno mi da una mano? :cry:
Super_Cloud
22-06-2006, 00:34
tra l'altro oltre ai file .c e gli header c'è anke un file ke si kiama "makefile" senza estensione, ke me ne faccio? :confused:
Gandalf_BD
22-06-2006, 07:26
tra l'altro oltre ai file .c e gli header c'è anke un file ke si kiama "makefile" senza estensione, ke me ne faccio? :confused:
serve per compilare, linkare e creare l'eseguibile a partire dai sorgenti che hai...
se lo apri, troverai delle regole, che specificano al Makefile come compilare i sorgenti... se provi a scrivere "make" dovrebbe fare tutto lui e produrti l'eseguibile
:)
Super_Cloud
22-06-2006, 10:06
ehm....
è un file senza estensione, come lo apro? :confused:
e dove scrivo "make"? :confused:
Gandalf_BD
22-06-2006, 13:29
ehm....
è un file senza estensione, come lo apro? :confused:
e dove scrivo "make"? :confused:
ops... scusa, ma ho dato per scontato che fossi su Linux.. :doh:
se sei su windows, almeno per quanto ne so io, del Makefile non te ne fai proprio niente :bsod:
:)
Super_Cloud
22-06-2006, 13:49
oh cazz!
e allora mo come faccio a far fungere ste cose :mc:
Gandalf_BD
23-06-2006, 07:20
guarda.. non ne ho idea... :confused:
da cosa scrivi tu, sembra che tu non faccia nulla di sbagliato... li compili tutti insieme, e questa è la procedura giusta... può darsi che il DevC++ sia un po' andato... hai provato ad installare un altro compilatore?
trallallero
23-06-2006, 07:26
ops... scusa, ma ho dato per scontato che fossi su Linux.. :doh:
se sei su windows, almeno per quanto ne so io, del Makefile non te ne fai proprio niente :bsod:
:)
proprio niente niente ? :eek:
non puó neanche aprire una ms-dos shell e scrivere
make ???
mi sa che l'uomo del futuro se usa Windows avrá le mani con 2 dita :D
Gandalf_BD
23-06-2006, 08:18
proprio niente niente ? :eek:
allora... i miei informatori mi hanno appena informato che c'è la possibilità di usare il Makefile anche sotto Windows...
è però necessario installarsi il make program per Win, ma non ho idea di cosa sia e di come funzioni :D
in ogni caso, quel programma dovrebbe funzionare anche senza Makefile...
x Super_Cloud: hai voglia di postare il contenuto del Makefile? aprilo con blocco note... se non riesci, rinominalo come .txt...
:)
EDIT: Aleeeee ohoooooooo!! sono Senior Member!! :cool: :happy: :cincin: :winner:
trallallero
23-06-2006, 08:48
EDIT: Aleeeee ohoooooooo!! sono Senior Member!! :cool: :happy: :cincin: :winner:
segnalato!!! Il regolamento vieta severamente
"atteggiamenti entusiasti e provocatori" al fine di evitare di
offendere e deridere gli utenti che hanno uno stato inferiore.
Verrai degradato a "bebé member"!
:sofico: :D
auguri :)
Gandalf_BD
23-06-2006, 09:20
segnalato!!! Il regolamento vieta severamente
"atteggiamenti entusiasti e provocatori" al fine di evitare di
offendere e deridere gli utenti che hanno uno stato inferiore.
:eek: :eekk: :sob:
Verrai degradato a "bebé member"!
:D :D :D
Super_Cloud
23-06-2006, 14:08
avevo già aperto il makefile, questo è quello ke c'è dentro:
-------------------------------
target:
gcc -g -Wall -I. -o ordina main.c sort.c -lm
clean:
rm -f *~ ordina *.txt
-------------------------------
per me sono cose senza senso, credo comandi dos, boh
(mah..., ho provato a scrivere "makefile" in dos quando sono nella cartella del file, ma mi dice che makefile non è un cazz...)
oddio, mi sto preoccupando, tra qualke giorno ho l'esame come faccio :cry:
trallallero
23-06-2006, 14:59
avevo già aperto il makefile, questo è quello ke c'è dentro:
-------------------------------
target:
gcc -g -Wall -I. -o ordina main.c sort.c -lm
clean:
rm -f *~ ordina *.txt
-------------------------------
target e clean sono degli "alias", identificativi
se scrivi:
make target
vengono eseguite le istruzioni corrispondenti
in questo caso:
gcc -g -Wall -I. -o ordina main.c sort.c -lm
che provo a spiegare:
gcc é il comando per la compilazione e "linkaggio", ovvero crea l'eseguibile
-g attiva l'opzione di debug
-Wall attiva altre opzioni troppo lunghe da spiegare
-I dice che la directory dove cercare i file .h é . (quella da dove lanci gcc)
-o é il nome dell'output (ordina)
main.c sort.c sono i files .c da compilare
-lm usa le librerie "m" cioé quelle per la matematica
elementare Watson :D
trallallero
23-06-2006, 15:03
in effetti -Wall non é cosí lungo da spiegare:
attiva tutti i warnings.
W = warnings
all = tutti
hai visto quando crei un programma che succede di fare errori
oppure il compilatore di avverte di qualcosa di sospetto ?
ecco, attivi tutti i possibili avvisi :)
Gandalf_BD
23-06-2006, 15:21
-I dice che la directory dove cercare i file .h é . (quella da dove lanci gcc)
-lm usa le librerie "m" cioé quelle per la matematica
ma sotto Windows la devi linkare la libreria matematica o lo fa in automatico??? :confused:
(ricorda che lui non è su Linux :) )
trallallero
23-06-2006, 15:34
ma sotto Windows la devi linkare la libreria matematica o lo fa in automatico??? :confused:
(ricorda che lui non è su Linux :) )
questo non lo so.
É lui che ha postato il makefile e c'era -lm ;)
Super_Cloud
23-06-2006, 16:21
è inutile non riesco a compilare sti cazzi di programmi, io mi impicco...
ho provado col dos a scrivere make target o altre cazzate ma non fa nulla porca pupazza :muro: :muro:
Gandalf_BD
23-06-2006, 17:42
ho provado col dos a scrivere make target o altre cazzate ma non fa nulla porca pupazza :muro: :muro:
ma te l'ho detto... sotto Windows ci va un programma apposta... non puoi fare make <qualcosa>...
cmq, se vuoi un consiglio, prova un altro compilatore e poi facci sapere i risultati... chessò... turboC, che è vecchio ma funziona bene...
maxithron
23-06-2006, 18:55
è inutile non riesco a compilare sti cazzi di programmi, io mi impicco...
ho provado col dos a scrivere make target o altre cazzate ma non fa nulla porca pupazza :muro: :muro:
quei sorgenti evidentemente sono stati preparati per funzionare su un sistema diverso da windows (suppongo linux). Puoi fare una cosa molto semplice senza tentare di impazzire scaricando e provando millemila compilatori. Installa cygwin che trovi qui:
http://www.cygwin.com/mirrors.html
Scaricato ed installato, potrai installare, sempre dall'interno di cygwin il compilatore gcc e compilare con il 'make' quei sorgenti.
In merito al fatto che ti impegni la cpu al 100% e che ti "parta" solo un main.exe, beh, se si potessero vedere questi sorgenti forse ci si potrebbe capire qualcosa di più. Dai nomi "esotici" dei files, deduco che sia un piccolo programmino di studio sugli algoritmi di ordinamento.
trallallero
23-06-2006, 19:45
io ho installato il Bborland Builder ed il make ce l'ho
C:\>make
MAKE Version 5.2 Copyright (c) 1987, 2000 Borland
dovresti dirci cosa ti esce quando fai make,
postarci i sorgenti.
Così è impossibile aiutarti.
E comunque io rimango connesso qualche minuto poi domani me ne vo al mare :D
Ma sicuramente ci sono altri che ti possno aiutare.
Ciao :)
Black imp
24-06-2006, 03:36
forse sbagliavo io
ho aggiunto tutti e tre i file in un progetto e l'ho compilato, me lo compila senza problemi...
però se provo a eseguirlo parte un main.exe, non si apre nessuna finestra e sto main.exe mi ciuccia il 100% di CPU :doh:
lo stesso succede con altri progetti (soluzioni del professore), parte un main.exe, non succede nulla, e la cpu viene sfruttata al 100& dal main.exe, booooh
ho come l'impressione ke sia io ke non sia proprio capace a far ste cose, qualkuno mi da una mano? :cry:
mettiamo da parte un attimo sto makefile. ma sei sicuro che tu stia compilando qualcosa che ha senso e funziona sotto windows?? non puoi linkare i sorgenti di uno dei programmi che non funziona così vediamo se il problema non è lì? se usi le finestre di windows bisogna utilizzare dei pattern particolari per l'intestazione delle funzioni, in particolare di quella principale.
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.