c - dlsym - "Too many arguments to function"错误

标签 c dynamic shared-libraries .so

我正在做一个涉及动态加载共享库的 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 - dlsym - "Too many arguments to function"错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42201129/

相关文章:

c - 向开源应用程序添加 SSL 支持

ios - 如何在 iOS 上获取当前信号处理程序?

c - 为什么每次在目录中制作不同的程序时只创建 a.out?

c - 如何将非 const 动态多维数组传递给需要 const 多维数组的函数?

c - 将结构数据复制到链表时出现段错误

c# - 为什么我的自定义控件的组件没有启动?

javascript - 动态添加的类适用于 <td> 但不适用于 <tire>。为什么?

c++ - 在 C 中使用共享库很好,但在 C++ 中使用相同的代码不好吗?

android - 另一个 ffmpeg/libx264 问题

c# - 在 Windows 上用 C# 加载 linux 动态库 (.so)