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);
您的声明表明该函数不接受任何参数,因此当您使用参数调用它时会出错。
我正在做一个涉及动态加载共享库的 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);
您的声明表明该函数不接受任何参数,因此当您使用参数调用它时会出错。