Domanda

Sono sicuro che questo problema sia stato risolto in precedenza e sono curioso di sapere come sia stato fatto. Ho un codice in cui, quando eseguito, voglio scansionare i contenuti di una directory e caricarne le funzionalità.

In particolare, sto lavorando con un motore di scripting a cui voglio poter aggiungere chiamate di funzione. Voglio che il motore principale offra funzionalità molto limitate. L'utente dovrebbe essere in grado di aggiungere ulteriori funzioni tramite librerie di terze parti, che voglio che il motore esegua la scansione e il caricamento. Come viene fatto?

È stato utile?

Soluzione

Dipende dalla piattaforma. Su win32, si chiama LoadLibrary per caricare una DLL, quindi ottenere le funzioni da esso con GetProcAddress . Su piattaforme Unixy, gli equivalenti sono dlopen e dlsym .

Altri suggerimenti

Puoi usare le funzioni dlopen / dlsym / dlerror / dlclose di POSIX in Linux / UNIX per aprire dinamicamente le librerie condivise e accedere ai simboli (comprese le funzioni) che forniscono, vedi pagina man per i dettagli.

Se vuoi usare una libreria per questo, ti consiglio GLib (la libreria di utility che si trova sotto il toolkit GTK + UI). È dotato del " GModule " sub-API, che fornisce un modo pulito e portatile per farlo. Questo ti evita di dover avvolgere te stesso le chiamate pertinenti e ti porta anche il resto di GLib che è molto utile avere nei programmi C di qualsiasi dimensione.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top