1

我对 C 和 C++ 编程相对缺乏经验,但是如果可以从共享库中加载和调用符号(据我所知,它们的编译和链接很像二进制文件),是否也可以从另一个 [executable] 二进制文件中加载符号在运行期间?

我对在 Linux 上使用 GCC 执行此操作特别感兴趣。

4

2 回答 2

2

如果您在 Windows 上编程

  1. LoadLibrary将共享库加载到当前进程中
  2. GetProcAddress获取要调用的函数的地址

在像 Oses 这样的 unix 上。dlopendlsym 之类的东西

dlsym 的示例查找 6.6。文件 demo_dynamic.c

于 2011-11-10T03:22:35.843 回答
1

理论上是的,您应该能够从二进制文件中提取对象并链接到它(静态或动态),但它需要您检查二进制结构。这很容易做到,因为现代 Linux 系统都使用 ELF 二进制文件,这是有据可查的。建议你从维基百科的文章开始,从那里开始。

于 2011-11-10T07:34:39.207 回答