LINUX.ORG.RU

slsym


0

0

Господа у меня проблема при подключении библиотеки при помощи dlsym:

void *handle = dlopen ( "my.so", RTLD_LAZY);
int (*fun_p)(int) = dlsym( handle, "some_function");
int a;
fun_p(a);
dlclose(handle);

Точнее проблема не при работе, а во время компиляции. Выдает следующее:

$ g++ -o out some.cpp -ldl
some.cpp: Im function 'int main()':
some.cpp:17: error: invalid conversion from 'void*' to 'int(*)(int)'

Пробовал вызывать фунцию void some_function() т.е. ничего не передается и нечего
не возвращается та же история:

void *handle = dlopen ( "my.so", RTLD_LAZY);
void (*fun_p)() = dlsym( handle, "some_function");
fun_p();
dlclose(handle);

$ g++ -o out some.cpp -ldl
some.cpp: Im function 'int main()':
some.cpp:17: error: invalid conversion from 'void*' to 'void(*)()'

Библиотека компилируется нормально, проблема возникает при компиляции программы. Компилятор gcc-3.3.4

anonymous

ошибся

anonymous
()

а что удивляет-то? пишите так: void (*fun_p)() = (void(*)())dlsym( handle, "some_function");

dlsym здесь не при чем, учите с++.

idle ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.