-
-
关于dlopen函数
-
发表于:
2017-11-14 15:21
3892
-
#include<stdio.h>
#include<stdlib.h>
#include<dlfcn.h>
int main()
{
int a,b;
void *p;
int (*func)(int,int);
scanf("%d%d",&a,&b);
p=dlopen("libdldl.so",RTLD_NOW);
if(p==NULL)
{
printf("dlopen error!\n");
exit(0);
}
else
printf("dlopen ok!\n");
func=dlsym(p,"max");
printf("%d and %d compare result is that %d is max\n",a,b,(*func)(a,b));
dlclose(p);
return 0;
}
程序可以正常执行,可以输出dlopen ok。
用dlopen加载so文件,这时候是不是会跳转到linker去解析这个so?我在linker里怎么抓不到log?下面是linker中dlfcn.cpp中我抓log的方法
void* dlopen(const char* filename, int flags) {
if(strcmp(filename,"libdldl.so")==0)
INFO("libdldl.so is find ");
......}
然后用adb logcat -d>log.txt 抓log 发现找不到libdldl.so。
哪位大神帮忙看下,谢谢。
[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!