libdl-simple.c revision 679e4fe6bd3f433e7990e19617a3157ce733a9c7
1679e4fe6bd3f433e7990e19617a3157ce733a9c7Joe Damato#include <stdlib.h> 2679e4fe6bd3f433e7990e19617a3157ce733a9c7Joe Damato#include <stdio.h> 3679e4fe6bd3f433e7990e19617a3157ce733a9c7Joe Damato#include <dlfcn.h> 4679e4fe6bd3f433e7990e19617a3157ce733a9c7Joe Damato 5679e4fe6bd3f433e7990e19617a3157ce733a9c7Joe Damatoint main(int argc, char **argv) { 6679e4fe6bd3f433e7990e19617a3157ce733a9c7Joe Damato void *handle; 7679e4fe6bd3f433e7990e19617a3157ce733a9c7Joe Damato int (*test)(int); 8679e4fe6bd3f433e7990e19617a3157ce733a9c7Joe Damato char *error; 9679e4fe6bd3f433e7990e19617a3157ce733a9c7Joe Damato 10679e4fe6bd3f433e7990e19617a3157ce733a9c7Joe Damato handle = dlopen ("liblibdl-simple.so", RTLD_LAZY); 11679e4fe6bd3f433e7990e19617a3157ce733a9c7Joe Damato if (!handle) { 12679e4fe6bd3f433e7990e19617a3157ce733a9c7Joe Damato fputs (dlerror(), stderr); 13679e4fe6bd3f433e7990e19617a3157ce733a9c7Joe Damato exit(1); 14679e4fe6bd3f433e7990e19617a3157ce733a9c7Joe Damato } 15679e4fe6bd3f433e7990e19617a3157ce733a9c7Joe Damato 16679e4fe6bd3f433e7990e19617a3157ce733a9c7Joe Damato test = dlsym(handle, "test_libdl"); 17679e4fe6bd3f433e7990e19617a3157ce733a9c7Joe Damato if ((error = dlerror()) != NULL) { 18679e4fe6bd3f433e7990e19617a3157ce733a9c7Joe Damato fputs(error, stderr); 19679e4fe6bd3f433e7990e19617a3157ce733a9c7Joe Damato exit(1); 20679e4fe6bd3f433e7990e19617a3157ce733a9c7Joe Damato } 21679e4fe6bd3f433e7990e19617a3157ce733a9c7Joe Damato 22679e4fe6bd3f433e7990e19617a3157ce733a9c7Joe Damato printf("%d\n", test(5)); 23679e4fe6bd3f433e7990e19617a3157ce733a9c7Joe Damato dlclose(handle); 24679e4fe6bd3f433e7990e19617a3157ce733a9c7Joe Damato} 25