PDA

View Full Version : [C] Linkaggio incrociato


Pier82m
01-07-2010, 22:20
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 :D

MadJackal
01-07-2010, 22:40
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 è.

Pier82m
01-07-2010, 22:49
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