dlsym

    0热度

    1回答

    我想从动态库中获取函数符号,然后我需要使用新函数指针替换函数库函数。代码将被写入C++文件。 我用下面的步骤, { void *temp = dlsym(<FLAGS>,<FUNC_NAME>); *reinterpret_cast<void**>(&real_mal) = temp; void *p = NULL; p = real_mal(size); return p; }

    3热度

    1回答

    是否可以使用dlsym从框架中加载已命名的未导出符号? 我试图导入符号有指其框架内提到了一个名字。这是我需要调用的一个函数。 我试图做到这一点通常dlopen + dlsym方式,但是当我尝试加载未导出的符号,dlsym返回NULL 指针。

    1热度

    2回答

    我在编写C++框架时遇到了问题,即用户的开销应该比使用它少。用户可以通过创建一个共享库来发布他们的工作,这些共享库包含一个类,该类由框架的BaseClass派生,并实现一个extern“C”createInstance()方法,以便将实例的派生类返回。因此,框架可以通过使用dlsym()通过共享库调用createInstance-Method来访问用户类。 class BaseClass{} c

    0热度

    2回答

    我已经使用dlsym()调用我的版本的malloc,而不是默认的库的malloc: lt_malloc = (void*(*)(size_t))dlsym(RTLD_NEXT, "malloc"); TRACE((stderr, "initialize: lt_malloc=%p\n", lt_malloc)); if (!lt_malloc) { fprintf(stderr, "

    2热度

    2回答

    奇怪的是,dlsym可以从已删除的二进制文件中导入函数。 有谁能告诉我为什么/如何? === FILE: a.c === int a1() { return 1; } int a2() { return 2; } === end of a.c === === FILE: b.c === #include <stdio.h> #include <dlfcn.h> #include <

    1热度

    2回答

    我试图用LD_PRELOAD拦截PyDict_New函数。我已经验证了this recipe在python解释器中使用了getpid,而我已经使用adapted it to use PyDict_New,但它并不像我期望的那样工作。虽然我明确分配字典,并且必须使用此函数,但我的覆盖不会被调用。 我在做什么错? 背景:我试图在一个非常大的系统中调试问题。我发现有一个引用计数不好的字典。我知道字典首先

    7热度

    1回答

    背景: ,我发现自己与移植C++的GNU/Linux的应用程序在Windows的不值得羡慕的任务。这个应用程序所做的一件事就是搜索特定路径上的共享库,然后使用posix dlopen()和dlsym()调用动态加载它们。我们有一个非常好的理由来做这种装载,我不会在这里进入。 问题: 动态地发现由C++编译器使用dlsym()或GetProcAddress的产生的符号()它们必须使用一个extern

    8热度

    5回答

    在我的C++程序中,如何在运行时以编程方式检测符号是否已通过Linux上的“strip”gnu开发工具进行了剥离? 我想要一个函数定义,如果剥离返回true,否则返回false。 在“main()”上使用dlsym()是否可以可靠地检测到它?

    1热度

    2回答

    我一直在关注使用Swig将C和TCL结合在一起的教程。该教程似乎正常工作,但最终我遇到了一个我无法解决的错误。情况如下: 我跟着的教程是: http://www.swig.org/tutorial.html。 我有一个名为test.c的文件: char *HelloWorld() { return "hello world"; } ,另一个名为test.i: %module te

    0热度

    1回答

    我真的很讨厌不得不在这里提问。但我一直在寻找some of the other posts,像这样的解决方案似乎并不奏效。它可能是我对语法的误解。 我正在改进我的一些旧代码。问题中的函数循环遍历一些加载的模块并运行一个函数。当我在x86上时,这段代码工作得非常好,但跳到64位正在搞砸了一切。 int FindCmd(ArgS *Args) { /* We need to check o