【发布时间】: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) 是将字符串传递给程序的好方法。
标签: c arguments shared-libraries main