Questo è un seguito di Dynamic Shared Library compilation with g++.Libreria condivisa dinamica C++ su Linux
Sto provando a creare una libreria di classi condivisa in C++ su Linux. Sono in grado di compilare la libreria e posso chiamare alcune delle funzioni (non di classe) utilizzando le esercitazioni che ho trovato here e here. I miei problemi iniziano quando provo ad usare le classi che sono definite nella libreria. Il secondo tutorial che ho collegato mostra come caricare i simboli per creare oggetti delle classi definite nella libreria, ma si ferma a breve di usando gli oggetti per eseguire qualsiasi lavoro.
Qualcuno sa di un tutorial più completo per la creazione di librerie di classi C++ condivise che mostra anche come utilizzare quelle classi in un file eseguibile separato? Un tutorial molto semplice che mostra la creazione di oggetti, l'uso (getter e setter semplici andrebbero bene), e la cancellazione sarebbe fantastica. Un link o un riferimento ad un codice open source che illustri l'uso di una libreria di classi condivise sarebbe altrettanto valido.
Anche se le risposte da codelogic e nimrodm funzionano, volevo solo aggiungere che ho preso in mano una copia di Beginning Linux Programming poiché questa domanda, e il suo primo capitolo ha codice di esempio C e buone spiegazioni per la creazione e l'utilizzo di entrambe le librerie statiche e condivise. Questi esempi sono disponibili tramite Google Ricerca Libri nello an older edition of that book.
Non sono sicuro di capire cosa intendi per "utilizzarlo", una volta che viene restituito un puntatore all'oggetto, potresti usarlo come se tu usassi qualsiasi altro puntatore a un oggetto. – codelogic
L'articolo che ho collegato a mostra come creare un puntatore a funzione di una funzione di fabbrica oggetto utilizzando dlsym. Non mostra la sintassi per la creazione e l'utilizzo di oggetti dalla libreria. –
Avrete bisogno del file di intestazione che descrive la classe. Perché pensi di dover usare "dlsym" invece di lasciare che il sistema operativo trovi e collega la libreria al momento del caricamento? Fammi sapere se hai bisogno di un semplice esempio. – nimrodm