Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Программирование под Unix/Linux > dlsym


Автор: alex171069 25.12.2008, 15:00
Господа может быть кто знает почему
функция dlsym возвращает 0x0
при вызове из .so функции ?
И к томуже ругается на применение типа который везде описан .
Конкретнее :
я делаю library_handler = dlopen("libRSA_prot.so",RTLD_LOCAL | RTLD_LAZY);
и получаю нормальный Хендл .
но в последствии я пытаюсь получить ссылку на функцию из библиотеки libRSA_prot.so
следующим образом
typedef void (*simple_function)(void);
simple_function _function;
_function = dlsym(library_handler, "GetKeyPublic");
(*demo_function)() ; // пытаюсь запустить функцию на выполнение

при компиляции мне выдается ошибка подобного типа
main.cpp:30: ошибка: некорректное преобразование из ‘void*’ в ‘void (*)()’
Я уже не знаю на что подумать и как правильно вызвать из библиотеки функцию.
Может кто ткнет где не так ?

Автор: MAKCim 25.12.2008, 15:43
alex171069, 
либо надо комилировать С-компиляором (gcc)
либо использовать reinterpret_cast<>
Код

reinterpret_cast<simple_function>(dlsym(library_handler, "GetKeyPublic"));

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)