1

我曾经dlopen加载一个对象并dlsym获取一个指向共享对象函数的函数指针。一切正常。我已经测试了它调用然后共享函数(现在)只打印并且它在调用它的主程序中可以正常打印。现在我想将两个参数传递给这个函数。Anint和 a char *. 谁能帮我理解如何将参数传递给共享函数?我在网上搜索过,但我不明白它是如何工作的。

4

1 回答 1

9

加载函数:

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

您很可能会决定需要从dlsym(); 它是动态加载库的丑陋之一。

调用它:

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.
于 2012-11-21T22:59:41.973 回答