Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  

Название темы: Прога с параметрами
Показать сообщение отдельно

Аватара для shurikan

Старожил


Сообщения: 240
Благодарности: 1

Профиль | Отправить PM | Цитировать


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 - вообще облом, ну нету там такой функции, а мы её вызываем...

-------
UNIX, UNAS и др. Myself I'll like 'em


Отправлено: 02:55, 07-05-2003 | #4

Название темы: Прога с параметрами