Расширяя ответ Константина Ознобихина на вопрос, вы можете пометить функции c ++, на которые вы ссылаетесь, с помощью extern «C» в объявлении, чтобы компилятор не искажал имена во время компиляции.
extern "C" void hello() {
std::cout << "Hello\n";
}
Thisпозволит вам вызывать ваш объект / функцию по имени, которое вы ему изначально дали.В данном случае это 'hello'.
void *handle = dlsym(0, RTLD_LOCAL | RTLD_LAZY);
FunctionType *fptr = (FunctionType *)dlsym(handle, "hello");
fptr();
Есть куча вещей, которые extern "C" делает под капотом, поэтому вот короткий список: В источнике C ++, каков эффектвнешнего "C"?