Я выполняю упражнение C, которое требует динамической загрузки разделяемой библиотеки. Когда я компилирую мою тестовую программу, используя gcc -o test2 test2.c -ldl
команду, я получаю сообщение об ошибке:dlsym - ошибка «Слишком много аргументов для функции»
test2.c: In function ‘main’:
test2.c:27:5: error: too many arguments to function ‘test’
(*test)(array, size);
Это немного, где я получаю ошибку:
void (*test)(void);
test = dlsym(handle, "lib_fill_random");
(*test)(array, size);
lib_fill_random
объявляется с двумя аргументами, как в .h и .c файлы как void lib_fill_random(double *array, int size);
, и он отлично работает сам по себе.
Что может быть причиной этой проблемы?
Объявление 'void (* test) (void)' означает, что функция не принимает аргументов. – Barmar
@Barmar Итак, это должно быть 'void (* test) (double *, int);'? Извините за такой смешной вопрос, я просто нахожу dlsym немного запутанным прямо сейчас ... – COLOuRSLIDES
Я думаю, вы написали этот комментарий, прежде чем увидеть мой ответ. – Barmar