将参数传递给共享函数 - C.

时间:2012-11-21 22:50:40

标签: c arguments dlsym

我使用dlopen加载对象,使用dlsym来获取指向共享对象函数的函数指针。一切正常。我测试了它然后调用共享函数(现在)只打印它工作 - 在主程序调用它打印很好。现在我想向这个函数传递两个参数。一个int和一个char *。任何人都可以帮助我理解如何将参数传递给共享函数?我在网上搜索过但我无法理解它是如何工作的。

1 个答案:

答案 0 :(得分:9)

加载功能:

int (*func)(int x, char *y) = dlsym(dl_handle, "your_function");

你很可能决定从dlsym()返回时需要演员表;它是动态加载库的uglinesses之一。

调用它:

int i = 37;
char buffer[64];
int result1 = (*func)(i, buffer);  // Old school — pre-C89 (but still works and is explicit)
int result2 = func(i+1, buffer);   // New school — can leave you looking for the wrong thing.