dlsym

    1热度

    2回答

    考虑我有一个动态的外部库libExternal.dylib以下功能的外部库函数: void print(char* str) { // Changes the first char to 'a' and prints the string *str = 'a'; printf("%s\n", str); } 接下来,我有一个加载这个外部库和调用可执行(检查省略

    1热度

    1回答

    Overriding 'malloc' using the LD_PRELOAD mechanism 如何LD_PRELOAD用于设置ptr为NULL或任何其他的存储器地址,以避免悬挂指针漏洞。 void free(void *ptr) { real_free(ptr); ptr = NULL // will only set local ptr to NULL }

    0热度

    1回答

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

    3热度

    3回答

    当我尝试编译我的单元测试文件时,我得到'未定义对`dlsym'的引用错误。 我在Unix系统上(我在Ubuntu 12.04上)添加了-ldl到编译器工程,但我试图使用Zed的Shaw Makefile,但仍然没有发生任何事情。这是代码: CFLAGS=-g -O2 -Wall -Wextra -Isrc -rdynamic -DNDEBUG $(OPTFLAGS) LIBS=-ldl $(OP

    1热度

    2回答

    我想从我的共享库(.so)访问类符号 这是我需要的正确方法。 MyClass* pMyClass= (MyClass*)dlsym(phandle, "MyClass"); 如果这是正确的方法,那么我应该有我的MyClass标题用于投射。 我想知道是否有任何其他方式可以做到这一点,而不包括标题? 感谢

    4热度

    2回答

    我想拦截应用程序对dlsym的调用,我已经尝试在.so中声明我正在预加载dlsym,并使用dlsym本身来获取它的真实地址,但是由于相当明显的原因,这种行为并不起作用。 有没有一种方法比采取进程的内存映射更容易,并且使用libelf来查找加载的libdl.so中dlsym的真实位置?

    0热度

    1回答

    libdvm.so里面的Android2.3,我可以使用代码来调用dexFileParse 代码: void * handle = dlopen(“/ system/lib/libdvm.so”,RTDL_LAZY); void * pFunc = dlsym(handle,“dexFileParse”); 但libdvm.so出口_Z16dexFileParseXXX,我不会从 的dlsym(手

    2热度

    1回答

    我有一个奇怪的问题。当我使用共享库的参数调用导入的方法时,在这些方法中我有错误的参数。它是这样的: x = 1; y = 2; z = 3; (*method)(x,y,z); 在方法,我有: void method(int x, int y, int z){ // x = 2, y = 3, z = 32432423 - something like this } 这里我怎

    1热度

    2回答

    我必须调用外部库中的函数,其参数的类型和数量以及返回类型是未知的。我如何使用dlsym在C++中调用该函数? 编辑:我如何调用函数使用dlsym(),如果我得到返回类型和数据类型的参数作为字符串。 例如:客户端将func名称,返回类型和参数数据类型发送到服务器。服务器使用dlopen()动态加载对应的。现在我怎样才能使用dlsym调用func? 在此先感谢

    4热度

    2回答

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