|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Member
Iscritto dal: Jul 2008
Messaggi: 86
|
[VC++] Soluzioni multiprogetto
Ciao a tutti,
Rieccomi con un nuovo problema... Ho una soluzione composta da due progetti: ->Il progetto di avvio, che compilo come eseguibile. ->Una libreria, con classi e funzioni per il primo progetto. Adesso i problemi sono due... compilando come .lib o .dll tutto ok ma dall'eseguibile ottengo questo errore: Codice:
Errore 1 error LNK2019: riferimento al simbolo esterno "class classe __cdecl cl(void)" (?cl@@YA?AVclasse@@XZ) non risolto nella funzione _main main.obj ProvaLinker Errore 2 fatal error LNK1120: 1 esterni non risolti C:\Users\Mattia\Desktop\ProvaLinker\Debug\ProvaLinker.exe ProvaLinker Grazie, Zarko.
__________________
XFX 780i - Zotac GTX470 + XFX 8800GTS 512Mb - 2x Patriot Viper 2Gb SLI-Ready - Q9300 @ 3.2GHz - Triton 88 - SuperFlower 700W I computer sono stupidi, se vuoi convivere con loro impara a dirgli cosa fare. |
![]() |
![]() |
![]() |
#2 |
Senior Member
Iscritto dal: Mar 2009
Città: Bologna
Messaggi: 1174
|
Il programma non trova il riferimento alla funzione "cl()" che tu stai chiamando da "main"
Normalmente cio' accade quando la funzione in questione e' definita in prototipo, ma il linker non ne trova il "corpo". In pratica, o hai dimenticato di includere la libreria in questione al linker (in VC, Linker->Input->AdditionalDipendencies) ... o la funzione e' riconosciuta diversamente in base ai parametri formali (differenza tra prototipo e copro della funzione). Per quanto riguarda la differenza tra Libreria (statica) e DynamicLinkLibrary, lo dice il nome. L'una viene collegata staticamente, ossia il corpo della funzione o delle funzioni, usate dal tuo programma, risiedono nell'eseguibile. Nel secondo caso, le funzioni risidono in un file esterno,DLL appunto, e nel tuo programma esiste solo il "riferimento" a dove siano. Alcuni vantaggi di una DLL (o libreria dinamica in genere) sono che la libreria puo' essere allocata in memoria dinamicamente e "scaricata" quando non serve piu'. Inoltre, un'unica allocozione (unica area di memoria) e' condivisibile da piu' programmi che ne facciano uso, mentre con una libreria statica ogni programma ha la propria copia delle funzioni in memoria. Di contro hai una gestione dell'istallazione: una DLL deve trovarsi nella cartella a cui l'eseguibile fa riferimento o nel PATH degli eseguibili. |
![]() |
![]() |
![]() |
#3 |
Member
Iscritto dal: Jul 2008
Messaggi: 86
|
Grazie mille!
![]()
__________________
XFX 780i - Zotac GTX470 + XFX 8800GTS 512Mb - 2x Patriot Viper 2Gb SLI-Ready - Q9300 @ 3.2GHz - Triton 88 - SuperFlower 700W I computer sono stupidi, se vuoi convivere con loro impara a dirgli cosa fare. |
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 13:11.