#include <stdio.h>
#include <dlfcn.h>
typedef int(*export_fn)();
int main()
{
void* lib_handle = dlopen("./shared.so", RTLD_LAZY);
if(!lib_handle){
printf("ERROR: %s\n", dlerror());
return 1;
}
export_fn foo = dlsym(lib_handle, "shared_foo");
if(!foo){
printf("ERROR: %s\n", dlerror());
return 1;
}
export_fn bar = dlsym(lib_handle, "shared_bar");
if(!bar){
printf("ERROR: %s\n", dlerror());
return 1;
}
puts("Calling foo\n");
foo();
puts("Calling bar\n");
bar();
puts("All success\n");
dlclose(lib_handle);
return 0;
}