#include #include #include int main() { void* handle = NULL; void (*izpis)(); int (*vsota)(int,int); printf("Primer eksplicitne uporabe dinamicnih knjiznic\n"); handle = dlopen("./libprva.so",RTLD_LAZY); if (handle == NULL) { perror("Ne morem odpreti libprva.so\n"); return -1; } /* Klic prve funkcije */ izpis=(void(*)(void))dlsym(handle,"izpisi_pozdrav"); if (izpis==NULL) { perror("Ne najdem funkcije izpisi_pozdrav\n"); return -2; } izpis(); /* Klic druge funkcije */ vsota=(int(*)(int,int))dlsym(handle,"vrni_vsoto"); if (vsota==NULL) { perror("Ne najdem funkcije vrni_vsota\n"); return -3; } printf("Vsota: %d\n",vsota(40,2)); /* Klic tretje funkcije */ void (*izpisi_niz)(char*); izpisi_niz=(void(*)(char*))dlsym(handle,"izpisi_niz"); if (izpisi_niz==NULL) { perror("Ne najdem funkcije izpisi_niz\n"); return -7; } izpisi_niz("Niz, ki ga izpise 3. funkcija!"); /* Spremenljivka */ int *spremenljivka; spremenljivka=(int *)dlsym(handle,"vrednost"); if (spremenljivka==NULL) { perror("Ne najdem spremenljivke vrednost\n"); return -7; } printf("Spremenljivka ima vrednost: %d\n",*spremenljivka); dlclose(handle); return 0; }