Home | History | Annotate | Line # | Download | only in Inputs
      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