Как отобразить 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