Как вызвать класс и его функцию в файле so из программы на C ++ в Linux

Возможный дубликат:
Динамическая общая библиотека C ++ в Linux

Я пишу общий объект, скажем, libtest.so, который имеет класс и функцию. У меня есть другая программа с именем «Program.cpp», из которой я хочу вызвать класс и его функцию, присутствующую в файле libtest.so. Я не знаю, как поступить. Пожалуйста помоги.

Спасибо
С уважением
Махеш

3

Решение

Динамически нужно звонить dlsym чтобы получить адрес
функции, а затем вызвать его через указатель. Синтаксис этого
немного сложно, так как dlsym возвращает void*и нет конверсии
между void* и указатель на функцию. (Некоторые компиляторы позволяют это,
хотя формально, в до C ++ 11, он требовал диагностики, как и C
стандарт.) Решение, рекомендованное в стандарте Posix:

int (*fptr)( int );
*(void**)(&fptr) = dlsym( handle, "function_name" );

Это предполагает, что указатели на функции имеют одинаковый размер и формат
в качестве указателей на данные — не гарантируется стандартами C или C ++, но
гарантировано Posix.

1

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector