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