Господа у меня проблема при подключении библиотеки при помощи 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
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.
Похожие темы
- Форум Так всётаки как написать so'шку??? (2005)
- Форум помогите начинающему ! (2006)
- Форум libdl и обратные ссылки (2017)
- Форум Зачем нужны GTK_DIALOG(obj), GTK_WINDOW(obj) и т.п.? (2015)
- Форум помогите разобраться с qt (2004)
- Форум работа с calloc в С/с++ (2003)
- Форум UB или нет? (2020)
- Форум C++ invalid conversion (2020)
- Форум C++, dlopen, Модули, Segmentation fault (2019)
- Форум dlopen causes SEGFAULT (2005)