Как отобразить dlsym на нестатическую функцию-член C++ способом, аналогичным функции C?

Я внимательно изучил и протестировал следующие URL-адреса: функция вызова в разделяемой библиотеке (Linux) получает ошибку сегментации, а также 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");

Любая помощь приветствуется.

1 ответ

Решение

Попробуйте загрузить метод по его искаженному имени, извлеченному с помощью

readelf -Ws libmy.so

или же

nm -g libmy.o
Другие вопросы по тегам