【问题标题】:parameter passing to a shared object function传递给共享对象函数的参数
【发布时间】:2009-12-16 15:50:56
【问题描述】:

我有一个 c 应用程序,它应该在运行时加载一个共享对象并调用共享对象的任意函数。共享对象是由用户构建的,并给了我他的功能的签名。

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

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

【问题讨论】:

    标签: c shared-libraries parameter-passing


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 2017-01-30
      • 1970-01-01
      • 2016-12-31
      • 2013-09-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多