我有一个 c++filt 命令来反编译符号,那么有没有工具可以对符号名称进行重编码呢? 如果我想在 C++ 函数名称上调用 dlsym(),这将非常有用。但我不想在代码中硬编码名称重编码,因为它可能会随着新的编译器版本或新的编译器品牌的使用而更改,或者由于编译多个平台而更改。 是否有一种程...
我正在尝试在我的代码中使用dlopen()和dlsym(),并使用gcc编译它。 这是第一个文件。/* main.c */ #include <dlfcn.h> int main() { void *handle = dlopen("./foo.so", RTLD_N...
我有一个应用程序,其中一部分使用共享库。这些库在编译时链接。 在运行时,加载器期望共享对象在 LD_LIBRARY_PATH 中,如果没有找到,则整个应用程序会崩溃并显示错误"无法加载共享库"。请注意,不能保证客户端具有该库,在这种情况下,我希望应用程序留下适当的错误消息,并且独立部分应正确...
我正在使用C中的dlsym(),我想问一下dlsym()的返回值是否应该显式转换,还是它会被正确地隐式转换。以下是函数:double (*(compile)(void))(double x, double y) { if (system("scan-build clang -fPIC ...
背景 POSIX标准为C语言添加了许多库函数和其他标识符。在dlsym()函数的描述中,它说(我强调): SYNOPSIS #include <dlfcn.h> void *dlsym(void *restrict handle, const char *restrict ...
简介 首先我要为这个问题的长度道歉,尽管我已经尽可能地简化了它,但它仍然很长。 设置 我定义了两个接口,A和B:class A // An interface { public: virtual ~A() {} virtual void whatever_A()=0; }; ...
dlopen()是一个C函数,用于在运行时动态加载共享库。如果您不熟悉这种模式,那么它的步骤如下: 调用dlopen("libpath", flag)以获取到库的void *handle 调用dlsym(handle, "object_name")以获取到库中所需的东西的void *obj...
我会使用dlsym在我的程序中查找符号,但它总是返回NULL,这不是我期望的。根据手册,如果存在错误或者符号确实为NULL,dlsym可能会返回NULL。在我的情况下,我遇到了错误。我将向您展示今晚制作的MCVE。 instr.c的内容如下: #include <stdio.h>...
在我的C++程序中,我如何在运行时通过编程方式检测符号是否已经通过Linux上的“strip” GNU开发工具进行剥离? 我想要一个函数定义,如果被剥离则返回true,否则返回false。 使用dlsym()在“main()”上能否可靠地检测到这一点?