Nigon
Цитата:
powerfunc = dlsym(ext_library, argv[1]);
|
Здесь всё ок! В смысле передачи параметров. Только
dlsym возвращает
void *. Необходимо сделать преобразование типов перед присваиванием.
powerfunc = (double (*) (double)) dlsym(ext_library, argv[1]);
Добавлено:
Я бы ещё на нуль проверил. Вдруг такой функции в разделяемой библиотеке нет... И еще надо быть уверенным, что, если функция есть, она принимает один параметр заданного типа и возвращает данные типа, который нужен.
Добавлено:
Допустим в /root/Pro/libpowers.so есть три функции:
double first(double x);
int second(double x);
double third(double x, double y);
Тогда myprog first - сработает.
myprog second и myprog third - рухнут, second вернёт не то, что мы ждем (да и механизм возврата значений типов int и double разный), а third сама ждёт, что ей два параметра передадут, а мы только один пытаемся подсунуть (проблемы со стеком).
Ну, а myprog fourth - вообще облом, ну нету там такой функции, а мы её вызываем...