abcd423417984 Skrevet 11. mai 2006 Del Skrevet 11. mai 2006 Hei Er det noen standard-måte å løse følgende problemstilling på? Jeg ønsker at Linux-applikasjonen min (skrevet i C) skal kunne laste inn deler av applikasjonen under kjøring. Dvs addons/plugins/moduler om du vil. Det disse modulene skal inneholde er funksjonskall som kan nås av programmet som laster de inn. Noen tanker om dette? Lenke til kommentar
dayslepr Skrevet 11. mai 2006 Del Skrevet 11. mai 2006 man 3 dlopen (det er slik f.eks. SBCL laster inn biblioteker med funksjoner den kan kalle direkte btw.) Lenke til kommentar
abcd423417984 Skrevet 11. mai 2006 Forfatter Del Skrevet 11. mai 2006 (endret) Takker. Det funker. Her er infoen for de som måtte være interessert: For å kompilere en shared module: gcc -shared -fPIC -o module.so module.c For å kompilere programmet som tar i bruk modulen: gcc -ldl loader.c -o loader Modul koden: #include <stdio.h> void sayhello() { printf("hello world from module.c\n"); } Loader koden: #include <dlfcn.h> #include <stdio.h> typedef void (*pf)(); int main() { void *lib; pf greet; lib = dlopen("./module.so", RTLD_NOW); if(!lib) { printf("failed to open module.so: %s\n", dlerror()); return 1; } greet = (pf)dlsym(lib, "sayhello"); if(!greet) { printf("failed to load sayhello(): %s\n", dlerror()); return 1; } greet(); dlclose(lib); return 0; } Endret 11. mai 2006 av invictus Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå