参数传递给共享对象函数

时间:2009-12-16 15:50:56

标签: c shared-libraries parameter-passing

我有一个c-application,应该在运行时加载一个共享对象并调用共享对象的任意函数。共享对象由用户构建,并为我提供了其功能的签名。

 int func(int a, int b, double c)

我使用dlopen加载对象和dlsym以获取指向共享对象函数的函数指针。现在我必须将参数传递给函数。我现在不在编译时签名。什么是最好的方法呢? 在我的应用程序中调用函数之前,有没有机会检查签名?

1 个答案:

答案 0 :(得分:2)

请查看C/C++ function pointer tutorial。它应该回答你所有的问题。

关于在运行时检查:否,您无法检查签名是否合适,因为C不支持reflection。 dlsym()通常不会返回一个正确的函数指针,而是一个你必须转换的(void *)。使用您事先不知道签名的任意共享函数是设计错误的标志。我的建议是重新思考架构。