#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, 1008452876
func1 .......
func1 .......
========================================
打开时使用local 或者 global 都无任何问题