2

假设x.so我的目标系统上有一个库,而我的开发系统上没有。

我需要使用 gcc 在我的开发机器上编译一个程序,该程序使用x.so.

有没有办法做到这一点?

4

1 回答 1

2

是的。您根本不链接该库,而是使用 dlopen() 打开它:

void* dlhandle = dlopen("x.so", RTLD_LAZY);

并使用 dlsym() 从中加载符号:

some_func_pointer = dlsym(dlhandle, "function");

然后,您可以通过从 dlsym() 获得的函数指针调用 function()。函数指针的类型当然必须与您正在加载的函数相匹配。它没有为您检查。

于 2013-01-22T11:03:47.970 回答