如何使用 .so 文件作为 c 中的主要参数?
Posted
技术标签:
【中文标题】如何使用 .so 文件作为 c 中的主要参数?【英文标题】:How to use .so files as main arguments in c? 【发布时间】:2019-11-01 14:16:36 【问题描述】:我必须编写一个 c 程序,在 main 方法中获取一个 .so 文件(共享对象)作为参数,并在其上调用一个函数 f。它期望函数 f 存在于这个库中。我的程序必须适用于任何 .so 文件,所以我不能直接包含它们。
所以通过调用
./myprogram myLibrary.so
myprogram 必须这样做:
int main(int argc, char *argv[])
return argv[1].f();
如何实现这一点以及在编译我的代码时我还需要考虑什么?
【问题讨论】:
man dlopen
、man dlsym
等
更具体地说:dlopen
需要一个文件名,作为一个字符串。命令行 (argv
) 是将字符串传递给程序的好方法。
【参考方案1】:
您正在尝试执行的操作称为库的“动态加载”。在类 Unix 操作系统上,您正在寻找的电话是 dlopen() 。它需要一个文件名和一些标志,并打开指定的共享库。然后,您可以使用dlsym()
例程查找单个符号(如您的函数 f()),然后您可以在程序的其他地方调用它。
【讨论】:
以上是关于如何使用 .so 文件作为 c 中的主要参数?的主要内容,如果未能解决你的问题,请参考以下文章