Динамические библиотеки
Добавлено: 18 авг 2003, 17:21
Есть такой код на C ( чисто учебный ):
Динамическая библиотека (libm.so) загружается с помощью функции dlopen,
Потом идёт функция dlsym:
cosine = dlsym( handle, “cos” );
Переменная cosine объявлена как double (*cosine)(double);
Если этот код включен в программу на C, то всё ОК, но если попытаться сделать что-нибудь подобное в C++, то gcc сразу выдаёт ошибку:
./math.cc:19: cannot convert `void *' to `double (*) (double)' in
assignment
Насколько я понимаю, C++ не может автоматически преобразовать указатель типа void в указатель на функцию. Как же в тогда его можно надурить ?
P.S. Если я что-нибудь неправильно понял или плохо объяснил, извините, т.к. программирую второй месяц.
Динамическая библиотека (libm.so) загружается с помощью функции dlopen,
Потом идёт функция dlsym:
cosine = dlsym( handle, “cos” );
Переменная cosine объявлена как double (*cosine)(double);
Если этот код включен в программу на C, то всё ОК, но если попытаться сделать что-нибудь подобное в C++, то gcc сразу выдаёт ошибку:
./math.cc:19: cannot convert `void *' to `double (*) (double)' in
assignment
Насколько я понимаю, C++ не может автоматически преобразовать указатель типа void в указатель на функцию. Как же в тогда его можно надурить ?
P.S. Если я что-нибудь неправильно понял или плохо объяснил, извините, т.к. программирую второй месяц.