我使用dlopen加载对象,并使用dlsym获取指向共享对象函数的函数指针。一切正常我已经测试了它的调用,然后共享函数(目前)只打印,它在调用它的主程序中运行良好现在我想给这个函数传递两个参数。一个int和一个char *。有谁能帮助我理解如何将参数传递给共享函数吗?我在网上搜索过,但我不明白它是怎么工作的。

最佳答案

加载函数:

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

您很可能会决定在dlsym()返回时需要一个强制转换;它是动态加载库的ugliness之一。
调用它:
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.

关于c - 将参数传递给共享函数-C,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13503367/

10-11 19:36
查看更多