Newsgroup: it.comp.programmare.win32
Titolo: Errore linker Dev-C++

Ciao!qualcuno mi sa aiutare!?!Io ho scritto in c questo semplice comando: 
gint32 Image = gimp_file_load(GIMP_RUN_INTERACTIVE, "c:/Dev-C++/Bin/Image1.bmp", "Image1.bmp"), ma quando vado a compilarlo mi genera questi errori: 
undefined reference to `g_win32_get_system_data_dirs_for_module' 
undefined reference to `gimp_file_load' 
come posso risolvere cio? Io ho inserito le librerie libgimp e glib. 
Aiutatemi!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
-- 
liliana 
------------------------------------------------------------------------
View this thread: 
http://www.itsistemi.net/viewtopic-849013.html
Inviato via 
http://www.itsistemi.net

 Aiutatemi!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
l'errore vuol dire semplicemente che il linker non riesce a localizzare
quei due simboli, "gimp_file_load" e quell'altro con quel nome assurdo;
essi si trovano in una DLL o in una libreria statica, e per trovarli il
linker ha bisogno del file .lib che descrive la libreria che li contiene,
statica o dinamica che sia. quindi, se questa libgimp è quella giusta,
l'unica possibilità è che tu abbia sbagliato qualcosa nel passarla al
linker ^^
cosa intendi di preciso quando dici di aver "inserito" libgimp? inserita
dove? e glib che è? dal nome non sembra un .lib ...
non hai modo di vedere di preciso la linea di comando costruita dal
Dev-C++ per richiamare il compilatore? dobvrebbe stare da qualche parte
nelle opzioni del progetto... da essa puoi capire se la libreria viene
effettivamente passata o no.
-- 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

ho inserito libgimp perchè l'ho messa nell'include. glib è un'altra libreria che ho inserito nell'include, dico che la trova perchè prima di fare include diceva che non la trovava.
Ma dove posso trovare la lib che dici tu?


 ho inserito libgimp perchè l'ho messa nell'include. glib è un'altra libreria
che ho inserito nell'include, dico che la trova perchè prima di fare include
diceva che non la trovava.
cioè hai fatto
#include <libgimp>
o una cosa del genere...? se è così è sbagliato: fai confusione tra header
e libreria (succede spesso, non sono molti gli insegnanti di
Programmazione 1 che chiariscono bene la differenza); la direttiva
#include serve esclusivamente ad includere headers, le librerie sono
tutt'altra cosa e si includono in tutt'altro modo; tant'è vero che gli
headers sono processati dal compilatore, mentre le librerie dal linker, e
il tuo è un errore di linking, non di compilazione.
l'inclusione di una libreria non si fa da codice, si fa da linea di
comando, e perciò non esiste una maniera standard, cambia da un
compilatore all'altro; tu usi Dev-C++, quindi come compilatore usi MinGW;
ripeto, devi vedere le opzioni di linking dal Dev-C++, qui si tratta di un
banalissimo problema di come si usa quell'IDE :)
fatti consigliare da qualcuno che usa Dev-C++ (io non lo uso perché non mi
piace), forse devi includere il file .lib nel progetto come se fosse un
sorgente...


Grazie mille!!! Ora ti chiedo un ultimo favore mi dici il compilatore che usi tu perchč per me uno vale l'altro basta che funzioni!!! Cosě mi dici anche come inserire la libreria, ancora grazie sei un angelo!


Ciao!Ho seguito tutto ciò che mi hai detto e finalmente non mi da più quei maledetti errori! L'unica cosa che ora mi da è :quando vado a fare il run mi dice gimp.dll.a non trovato, cosa significa??? grazie ancora.
Ciao.


Riciao! Ho risolto anche il problema di prima però ora quando faccio il run mi da questo errore:
<process:2268>: Glib-CRITICAL **: file ghash.c: line 225 <g_hash_table_lookup>: assertion 'hash_table != NULL' failed
LibGimpBase-ERROR **:could not find handler for massage:5 aborting
cosa significa!!!!!!??????!!!!!!


ciao, vedo che hai postato qui anche ieri; comunque qua in genere si usa
un tono un po' più formale, il tuo è più un tono da forum :D
nulla di male eh, giusto per farti presente che qui l'ambiente è un po'
più anonimo rispetto a un forum :)
per rispondere alla tua ultima domanda: non conosco la libreria che usi,
intuisco che essa implementi alcune funzionalità di The GIMP; non
conoscendo la libreria non conosco quel messaggio di errore ma è
chiaramente un'asserzione: da qualche parte hai chiamato una funzione
della libreria in condizioni in cui essa non poteva essere chiamata, o
perché hai passato parametri non validi o per motivi di design.
in questo caso sembra la seconda: probabilmente hai dimenticato di
chiamare prima qualche altra funzione per inizializzare una hash table
usata dalla libreria (il messaggio dice che l'asserzione voleva trovare
una certa variabile "hash_table" diversa da NULL...)
devi leggere bene la documentazione della libreria e, se può aiutarti, dai
una letta ai sorgenti: il messaggio ti indica che l'asserzione si trova
alla linea 225 del file ghash.c
PS: in generale la documentazione dei progetti opensource fa abbastanza
schifo :P
i programmatori si sa, gli pesa il didietro a documentare, ci vorrebbe un
mestiere di documentatore apposta: immagino che sarebbe molto ben
retribuito :P


Ciao!
 ecco il mio nuovo problema, ho installato una nuova libreria: gandalf però mi da lo stesso problema di linker che mi dava con gimp, con gimp ho trovato i file .a e .dll li ho inseriti nel compilatore e tutto è andato ok ora vorrei fare la stessa cosa con gandalf, ma non riesco a trovare questi maledetti file (.a e .dll) qualcuno mi sa aiutoare!!!!


  ecco il mio nuovo problema, ho installato una nuova libreria: gandalf perň
mi da lo stesso problema di linker che mi dava con gimp, con gimp ho trovato i
file .a e .dll li ho inseriti nel compilatore e tutto č andato ok ora vorrei
fare la stessa cosa con gandalf, ma non riesco a trovare questi maledetti file
(.a e .dll) qualcuno mi sa aiutoare!!!!
da dove salta fuori sta libreria gandalf? ^^
dacci qualche riferimento (link al sito ufficiale?), detto cosě non so
manco che č


Ecco il sito di gandalf: 
http://gandalf-library.sourceforge.net/
, però qui ci sono solo gli include, ma le lib e i bin dove sono!!!???!!!
