61 lines
1.3 KiB
C
61 lines
1.3 KiB
C
#include <dlfcn.h>
|
|
#include <locale.h>
|
|
#include <stdio.h>
|
|
|
|
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;
|
|
}
|