如何使用.so文件作为c中的主要参数?

use*_*364 2 c program-entry-point arguments shared-libraries

我必须编写一个ac程序,该程序在主方法中获取一个.so文件(共享对象)作为参数,并在其上调用函数f。它期望函数f存在于此库中。我的程序必须可以处理任何.so文件,因此无法直接包含它们。

所以打电话

./myprogram myLibrary.so
Run Code Online (Sandbox Code Playgroud)

myprogram必须执行以下操作:

./myprogram myLibrary.so
Run Code Online (Sandbox Code Playgroud)

如何实现这一目标,以及在编译代码时还要考虑什么?

Jim*_*wis 6

您尝试做的事情称为库的“动态加载”。在类似Unix的操作系统上,您要查找的调用是dlopen()。它需要一个文件名和一些标志,并打开指定的共享库。然后,您可以使用dlsym()例程查找单个符号(例如函数f()),然后可以在程序中的其他位置调用它们。