【问题标题】:How to use .so files as main arguments in c?如何使用 .so 文件作为 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 dlopenman dlsym
  • 更具体地说:dlopen 需要一个文件名,作为一个字符串。命令行 (argv) 是将字符串传递给程序的好方法。

标签: c arguments shared-libraries main


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 2017-06-18
    • 2013-06-20
    • 2016-08-10
    • 2015-06-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-31
    相关资源
    最近更新 更多