dlsym - "Too many arguments to function" 错误

dlsym - "Too many arguments to function" error

我正在做一个涉及动态加载共享库的 C 练习。当我使用 gcc -o test2 test2.c -ldl 命令编译测试程序时,出现错误:

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)(double *, int);

您的声明表明该函数不接受任何参数,因此当您使用参数调用它时会出错。