dlsym

    5热度

    1回答

    我正在尝试使用LD_PRELOAD机制来调用pthread_cond_broadcast。我插入的pthread_cond_broadcast函数只是调用原始的pthread_cond_broadcast。然而,对于pthread_cond_wait和pthread_cond_broadcast都被调用的非常简单的pthread代码,我最终会在glibc中得到一个段错误(对于glibc 2.11.

    4热度

    2回答

    在Linux中。每对dlsym(3)Linux手册页, *Since the value of the symbol could actually be NULL (so that a NULL return from dlsym() need not indicate an error),* 这是为什么,当可在符号(函数,特别是)是实际NULL?我正在审查代码,并找到一个使用dle

    1热度

    3回答

    我有以下代码,它只从当前目录加载库test.so,并在该库中执行version函数。应该返回的是一个字符串。反而返回的是堆栈中的垃圾(指针位置可能?)。有谁知道为什么下面的代码会失败。 #include <stdio.h> #include <stdlib.h> #include <dlfcn.h> int main(int argc, char **argv){ void *h

    4热度

    2回答

    如果库定义了同一个符号的多个版本,dlsym(RTLD_NEXT, "symbol")即使旧符号不是默认符号,也会返回旧符号。 例如,定义的libpthread的调用pthread_cond_broadcast两个版本: $:> nm -g /lib64/libpthread-2.15.so|grep pthread_cond_broadcast 000000000000bfc0 T [emai

    0热度

    1回答

    1)。直接打印功能地址: printf("strerror=%p, strerror_r=%p\n", strerror, strerror_r); strerror=0x8049ec0, strerror_r=0x8049e20 2)。对dlsym版本: rtldDefault= dlopen(0, RTLD_NOW | RTLD_GLOBAL); dlsym(rtldDefault,

    1热度

    1回答

    我已经使用dlopen加载对象,并使用dlsym来获取指向共享对象函数的函数指针。一切正常。我已经测试了它的调用,然后共享函数(现在)只能打印并且工作 - 在主程序中调用它的打印效果很好。现在我想传递两个参数给这个函数。一个int和一个char *。任何人都可以帮助我理解如何将参数传递给共享函数?我在网上搜索,但我不明白它是如何工作的。

    5热度

    1回答

    是否有任何希望运行dlopen(NULL, ...)并获取静态编译二进制文件的符号? 例如,如果程序是动态编译的,并且使用-rdynamic,则使用以下代码可以获得符号。 $ gcc -o foo foo.c -ldl -rdynamic $ ./foo bar In bar! 但随着-static我得到一个神秘的错误消息: $ gcc -static -o foo foo.c -ldl

    1热度

    1回答

    我正在使用POSIX dlopen/dlsym API在运行时加载动态库,然后通过名称从这些库调用函数。 在某处存储dlsym的结果是一个好主意吗?或者dlsym已经做了自己的缓存,并且会添加另一个图层无用或者甚至是有害的?函数可能会被调用很多次,但我实际上并没有办法事先知道哪些函数或它们被调用的频率。 谢谢!

    39热度

    4回答

    我有c++filt命令来去掉符号,什么是做相反的工具和破坏符号名称? 如果我想要调用dlsym()上一个错位的C++函数名称,这将会很有用。我宁愿不要在代码中硬编码名称,因为随着时间的推移,由于新的编译器版本或新的编译器品牌被使用,或者由于编译多个平台,目前它可能会改变。 是否有一种编程方式来获取代表C++函数在运行时的字符串,以便代码独立于编译器?一种可能的方法是在编译时调用一个实用程序,为正在

    0热度

    1回答

    我在C++中遇到了一些小问题。 所以,我有一个游戏,一种蛇的,我想用三个不同的图形库来做。 (如libsdl.so,libndk.so和libQt.so)。 我有以下类别: DisplaySDL.hh: #ifndef DISPLAYSDL_HH__ # define DISPLAYSDL_HH__ #include "IDisplay.hh" class DisplaySdl : pu