int myvar=100;
main()
{
pid_t (*f) (void );
int *ip;
int myvar=10;
f = (pid_t(*) (void)) dlsym(RTLD_NEXT, "getpid");
ip = (int *) dlsym(RTLD_NEXT, "errno");
if (ip)
printf("%d \r\n", *ip);
ip = (int *) dlsym(RTLD_NEXT, "myvar");
if (ip)
printf("%d \r\n", *ip); //not work where is i am wrong
}
最佳答案
getpid
和errno
符号由 libc 导出。
myvvar
符号在您的可执行文件中,可能未导出。
objdump -T 会帮你检查符号是否导出。
$ objdump -T /lib/libc.so.6 | grep -w getpid
00c9c570 g DF .text 00000036 GLIBC_2.0 getpid
关于c++ - 通过 dlsym 访问 C 中的阴影全局变量不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4612904/