如何以类似于C函数的方式将dlsym映射到非静态C++成员函数

How to map dlsym to a non-static C++ member function in a manner similar to a C function?

本文关键字:函数 映射 静态 成员 C++ dlsym 方式 类似于      更新时间:2023-10-16

我仔细研究并测试了以下URLS,在共享库(Linux)中调用函数会出现Segmentation Fault以及https://git.xeserv.us/Quora/dlsym-example/src/master/testprog.c.我的问题是如何将dlsym映射到类似于这个C函数示例的非静态C++成员函数。如果我用C函数语法代替非静态C++成员函数,我会得到一个no-op。

   void *lib;              /* void pointer named lib */
   void (*sayHello)(void); /* void pointer named sayHello */
   lib = dlopen("helloWorld.so", RTLD_NOW);
   *(void **) (&sayHello) = dlsym(lib,"_ZN19CDataTransferServer10InitializeEi13CC_SAMPLETYPEjjj");

感谢您的帮助。

考虑通过提取的损坏名称加载方法

readelf -Ws libmy.so

nm -g libmy.o