Gå til innhold

applikasjon med addons/plugins/moduler


Anbefalte innlegg

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
Videoannonse
Annonse

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 av invictus
Lenke til kommentar

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 konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...