#include <stdio.h>
void func1(){ printf("func1 ......./n"); return;}
gcc test.c -fPIC -shared -o libtest.so
cp libtest.so test1.so
cp libtest.so test2.so
================================
#include <stdio.h>#include <dlfcn.h>
int main(int argc, char *argv[]){ void *h1 = dlopen("./test1.so", RTLD_NOW | RTLD_GLOBAL);//LOCAL); void *h2 = dlopen("./test2.so", RTLD_NOW | RTLD_GLOBAL);//LOCAL); typedef void (*f)();
f s1 = (f)dlsym(h1, "func1"); f s2 = (f)dlsym(h2, "func1");
printf("%u, %u/n", s1, s2);
(*s1)(); (*s2)(); return 0;}
gcc -g -o test main.c -ldl
./test
1006351628, 1008452876func1 .......func1 .......
========================================
打开时使用local 或者 global 都无任何问题