#include
int p = 3;
void func()
{
printf("This is file 1\n");
}
下面试main:
1 #include
2 #include
3 #include
4
5 int main(void)
6 {
7 int * p;
8 func();
9 void * phandle;
10 void (*pfunc)();
11 phandle = dlopen("libshi.so",RTLD_NOW); //打开动态库
12 if(!phandle)
13 {
printf("Can't find libshi.so \n");
15 exit(1);
16 }
17 pfunc=(void(*)())dlsym(phandle,"printf");
18 if(pfunc)
19 {
20 pfunc();
21 }
22 else
23 printf("Can't find function print\n");
24
25 p = (int*)dlsym(phandle,"p"); //获取变量p的地址
26 if(p)
27 printf("p = %d\n",*p);
28 else
29 printf("Can't find int p\n");
30
31 (*pfunc)();
32 dlclose(phandle); //关闭动态库
33 return 0;
34 }
执行:gcc -o man main.c -ldl后没能如愿以偿的看见man而是出现:
[root@Creazy lib]# gcc -o main main.c -ldl
/tmp/cc2hxUKf.o: In function `main':
main.c:(.text+0xa): undefined reference to `func'
collect2: ld 返回 1
[root@Creazy lib]#
痛苦啊,折磨几个小时啦!!!
跪求大神指导。。。。。
Distribution 于 2014-01-06 09:06:11发表:
帮顶