【发布时间】:2017-02-13 09:53:17
【问题描述】:
我正在做一个涉及动态加载共享库的 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)(void)表示该函数不带参数。 -
@Barmar 所以应该是
void (*test)(double*, int);?抱歉问了这么荒谬的问题,我现在觉得 dlsym 有点太混乱了…… -
我猜你在看到我的回答之前就写了那条评论。
-
dlsym 与此无关,您可以将其从代码中完全删除并得到相同的错误,因此请也将其从问题中删除。
标签: c dynamic shared-libraries .so