PDA

View Full Version : [C]undefined reference to


federico100mt
12-05-2008, 09:30
ciao a tutti, immagino che ci sia qualcuno che si sia trovato davanti allo stesso problema...

praticamente importando la mia "libreria" .h e non c'è niente da fare, mi da l'errore undefined reference to..

sapete per caso come risolverlo? :cry:

graziee

federico100mt
12-05-2008, 10:31
ok,,, anche tu hai ragione :D

questo è l'errore:

C:\DOCUME~1\Fede\IMPOST~1\Temp/ccspbaaa.o:ValutaFO.c:(.text+0x4a): undefined reference to `ENopenH@0'
C:\DOCUME~1\Fede\IMPOST~1\Temp/ccspbaaa.o:ValutaFO.c:(.text+0x59): undefined reference to `ENinitH@4'
C:\DOCUME~1\Fede\IMPOST~1\Temp/ccspbaaa.o:ValutaFO.c:(.text+0x13f): undefined reference to `ENopen@12'
C:\DOCUME~1\Fede\IMPOST~1\Temp/ccspbaaa.o:ValutaFO.c:(.text+0x157): undefined reference to `ENsetreport@4'
C:\DOCUME~1\Fede\IMPOST~1\Temp/ccspbaaa.o:ValutaFO.c:(.text+0x169): undefined reference to `ENsetreport@4'
C:\DOCUME~1\Fede\IMPOST~1\Temp/ccspbaaa.o:ValutaFO.c:(.text+0x17b): undefined reference to `ENsetreport@4'
C:\DOCUME~1\Fede\IMPOST~1\Temp/ccspbaaa.o:ValutaFO.c:(.text+0x18d): undefined reference to `ENsetreport@4'
C:\DOCUME~1\Fede\IMPOST~1\Temp/ccspbaaa.o:ValutaFO.c:(.text+0x28c): undefined reference to `ENsetpattern@12'
C:\DOCUME~1\Fede\IMPOST~1\Temp/ccspbaaa.o:ValutaFO.c:(.text+0x30c): undefined reference to `ENsetlinkvalue@12'
C:\DOCUME~1\Fede\IMPOST~1\Temp/ccspbaaa.o:ValutaFO.c:(.text+0x3f4): undefined reference to `ENrunH@4'
C:\DOCUME~1\Fede\IMPOST~1\Temp/ccspbaaa.o:ValutaFO.c:(.text+0x459): undefined reference to `ENgetnodevalue@12'
C:\DOCUME~1\Fede\IMPOST~1\Temp/ccspbaaa.o:ValutaFO.c:(.text+0x4d9): undefined reference to `ENgetlinkvalue@12'
C:\DOCUME~1\Fede\IMPOST~1\Temp/ccspbaaa.o:ValutaFO.c:(.text+0x570): undefined reference to `ENgetlinkvalue@12'
C:\DOCUME~1\Fede\IMPOST~1\Temp/ccspbaaa.o:ValutaFO.c:(.text+0x5a4): undefined reference to `ENnextH@4'
C:\DOCUME~1\Fede\IMPOST~1\Temp/ccspbaaa.o:ValutaFO.c:(.text+0x5cf): undefined reference to `ENcloseH@0'
C:\DOCUME~1\Fede\IMPOST~1\Temp/ccspbaaa.o:ValutaFO.c:(.text+0x5d7): undefined reference to `ENclose@0'
collect2: ld returned 1 exit status



mentre per quanto riguarda il codice che è un simulatore di reti acquedottistiche che si chiama epanet... ho bisogno di utilizzare tutte le sue funzioni, infatti importo la sua
epanet2.h con #include "epanet2.h"

è vero che bisogna mettere un tag -L?

dove si mette? :help:

grazie

DanieleC88
12-05-2008, 11:28
Se il percorso della libreria non è standard, dì a MinGW di cercarlo anche in <percorso> con:
gcc codice.c -L<percorso>
E poi digli anche di collegare il tuo programma ai simboli esportati da <libreria> con:
gcc codice.c -L<percorso> -l<libreria>

federico100mt
12-05-2008, 11:56
penso ci stiamo avvicinando,

si cmq epanet è una libreria,

per fare meglio ho copiato tutti i listati .c nella stessa directory dove lavoro,che è c:\epanet\daTestare

sto provandoa fare
>gcc ValutaFO.c -L<C:\epanet\daTestare\epanet2.h> -l<C:\epanet\daTestare\epanet2.h> -o va

sto scrivendo in arabo?

aaaaa!!!:muro:

DanieleC88
12-05-2008, 12:09
LOL! Io ho scritto <libreria> e via dicendo solo per far vedere che l'opzione -l finiva ed iniziava il nome della libreria... :)

Togli i <> e riprova.

recoil
12-05-2008, 12:26
ciao a tutti, immagino che ci sia qualcuno che si sia trovato davanti allo stesso problema...

praticamente importando la mia "libreria" .h e non c'è niente da fare, mi da l'errore undefined reference to..

sapete per caso come risolverlo? :cry:

graziee

è un errore comune
importare il ".h" non significa affatto includere la libreria nel compilato. non è abbastanza... nel .h trovi i prototipi delle funzioni, le varie macro ecc. ma non c'è codice. la liberia, in fase di linking, va aggiunta a parte (ad esempio con il -l o con qualche opzione del tuo ide)