1 1.1 joerg 2 1.1 joerg #include <stdio.h> 3 1.1 joerg #include <stdlib.h> 4 1.1 joerg 5 1.1 joerg #ifdef DLOPEN_FUNC_DIR 6 1.1 joerg #include <dlfcn.h> 7 1.1 joerg #else 8 1.1 joerg void func(int K); 9 1.1 joerg void func2(int K); 10 1.1 joerg #endif 11 1.1 joerg 12 1.1 joerg int main(int argc, char *argv[]) { 13 1.1 joerg #ifdef DLOPEN_FUNC_DIR 14 1.1 joerg dlerror(); 15 1.1 joerg void *f1_handle = dlopen(DLOPEN_FUNC_DIR"/func.shared", DLOPEN_FLAGS); 16 1.1 joerg if (f1_handle == NULL) { 17 1.1 joerg fprintf(stderr, "unable to open '" DLOPEN_FUNC_DIR "/func.shared': %s\n", 18 1.1 joerg dlerror()); 19 1.1 joerg return EXIT_FAILURE; 20 1.1 joerg } 21 1.1 joerg 22 1.1 joerg void (*func)(int) = (void (*)(int))dlsym(f1_handle, "func"); 23 1.1 joerg if (func == NULL) { 24 1.1 joerg fprintf(stderr, "unable to lookup symbol 'func': %s\n", dlerror()); 25 1.1 joerg return EXIT_FAILURE; 26 1.1 joerg } 27 1.1 joerg 28 1.1 joerg void *f2_handle = dlopen(DLOPEN_FUNC_DIR"/func2.shared", DLOPEN_FLAGS); 29 1.1 joerg if (f2_handle == NULL) { 30 1.1 joerg fprintf(stderr, "unable to open '" DLOPEN_FUNC_DIR "/func2.shared': %s\n", 31 1.1 joerg dlerror()); 32 1.1 joerg return EXIT_FAILURE; 33 1.1 joerg } 34 1.1 joerg 35 1.1 joerg void (*func2)(int) = (void (*)(int))dlsym(f2_handle, "func2"); 36 1.1 joerg if (func2 == NULL) { 37 1.1 joerg fprintf(stderr, "unable to lookup symbol 'func2': %s\n", dlerror()); 38 1.1 joerg return EXIT_FAILURE; 39 1.1 joerg } 40 1.1 joerg #endif 41 1.1 joerg 42 1.1 joerg func(1); 43 1.1 joerg func2(0); 44 1.1 joerg 45 1.1 joerg return EXIT_SUCCESS; 46 1.1 joerg } 47 1.1 joerg 48