|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Member
Iscritto dal: Jul 2009
Messaggi: 33
|
[C] Linkaggio incrociato
Ciao a tutti. Non so se il titolo è chiarificatore, cercherò di spiegarmi cmq.
Sto facendo un progetto per l'università ma, pur essendo a buon punto, non avendoci fornito le corrette basi per il linkaggio ho qualche problema. Io ho il mio server con il main. Questo server inizializza una memoria che dovrà poi gestire. Ho una libreria chiamiamola libtest.h per semplicità, che esegue le operazioni sulla memoria, e per farlo utilizza delle variabili globali, ovvero ci sono nel server delle variabili globali, e la libreria le utilizza dichiarandole extern all'inizio. Devo generare un client test che interroghi la libreria per chiamare le funzioni che ci sono. Quindi linko questo client alla libreria, ma quando compilo mi dice, giustamente, che le variabili extern della libreria non sono state trovate, questo perchè ovviamente si trovano nel server e non nel client. Come posso far funzionare la cosa? Cioè come faccio a dire alla libreria che le sue variabili extern le deve andare a trovare sempre nel server così che quando gli linko un altro main che non le contiene, allora riesco a compilarlo senza errori? Spero di essermi spiegato |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Sep 2008
Messaggi: 376
|
Personalmente non so come si possa fare, ma se proprio devi usare delle variabili globali, non è meglio dichiararle all'interno della libreria e poi usarle come extern nel server?
In teoria la libreria dovrebbe essere "indipendente", così non lo è. |
|
|
|
|
|
#3 |
|
Member
Iscritto dal: Jul 2009
Messaggi: 33
|
Il fatto è che il server inizializza queste variabili dopo che inizializzato la memoria e lo può fare, per come ho progettato la cosa, soltanto leggendo il valore di ritorno della malloc che esegue. Quindi magari le altre variabili potrei anche spostarle però è il server che deve fare la malloc e inizializzare determinate strutture, soltanto dopo la libreria inizia a lavorarci sopra.
grazie lo stesso per la risposta, spero qualcun'altro possa essermi d'aiuto |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 15:31.




















