PDA

Visualizza la versione completa : [C]Linkare un file .a all'eseguibile


Et@Bet@
01-09-2008, 16:52
Salve a tutti.
Primo, perdonate la mia ignoranza.
Secondo, sto riscontrando un problema in un programma che sto scrivendo.
Non so se avete mai sentito parlare della libreria Cudd, in pratica implementa le BDD e altre strutture dati (io la sto usando per le BDD, ecco il link al sito http://vlsi.colorado.edu/~fabio/CUDD/). Per usare tale libreria devo includere due file header nel mio sorgente e linkare altri tre file .a all'eseguibile. Per i due header non c'è problema, infatti li vede e mi vede anche i tipi di dato, il problema è che non conosco un modo per linkare i file all'eseguibile. Come si fa?

EDIT:ah ecco dimenticavo, uso Visual C++ 6.0.

Grazie e scusate :mame:

XWolverineX
01-09-2008, 17:10
Non vorrei dire una fesseria, ma i file .a sono estensioni di librerie solo per i sistemi UNIX. Credo, quindi, che la libreria sia da ricompilare su Windows.

Et@Bet@
01-09-2008, 17:24
Ha ok allora devo rivalutare il problema; chi mi ha passato la libreria ha detto che era già compilata per Windows.
Nel codice faccio uso di tre funzioni chiamate Cudd_Ref, Cudd_ReadZero e Cudd_Init, quando compilo va tutto bene, ma quando faccio "Build" mi esce:
Linking...
prova.obj : error LNK2001: unresolved external symbol _Cudd_Ref
prova.obj : error LNK2001: unresolved external symbol _Cudd_ReadZero
prova.obj : error LNK2001: unresolved external symbol _Cudd_Init
A cosa può essere dovuto?
Grazie per il tuo intervento :smack:

XWolverineX
01-09-2008, 17:34
Che non hai effettuato il linking della libreria al compilatore.
Nel tuo caso sarebbe il file .a, ma non credo che possa leggerlo.

Et@Bet@
01-09-2008, 19:31
Originariamente inviato da XWolverineX
Che non hai effettuato il linking della libreria al compilatore.
Nel tuo caso sarebbe il file .a, ma non credo che possa leggerlo.
E hai proprio ragione, pensavo di averlo fatto bene e invece no. Grazie davvero, mi hai fatto un favorone.

mondobimbi
01-09-2008, 22:27
normalmente le librerie statiche windows hanno estensione .lib, penso però che possano avere anche estensione .a .
Devi dire al linker del tuo ambiente di lavoro che vuoi linkare queste librerie, normalmente per farlo c'è una opzione nel menu, probabilmente sotto opzioni di compilazione, opzioni del progetto o qualcosa di simile.
Vai lì e aggiungi all'elenco queste librerie, quindi prova e guarda se funziona.
ciao
sergio

Et@Bet@
01-09-2008, 22:32
Originariamente inviato da mondobimbi
normalmente le librerie statiche windows hanno estensione .lib, penso però che possano avere anche estensione .a .
Devi dire al linker del tuo ambiente di lavoro che vuoi linkare queste librerie, normalmente per farlo c'è una opzione nel menu, probabilmente sotto opzioni di compilazione, opzioni del progetto o qualcosa di simile.
Vai lì e aggiungi all'elenco queste librerie, quindi prova e guarda se funziona.
ciao
sergio
Già, infatti le librerie che gli ho lincato hanno estensione .lib. Lo avevo fatto anche prima ma, per una svista, non le avevo linkate tutte :nonlodire

Loading