我需要从另一个程序调用一个函数。如果另一个程序是一个库,我可以简单地使用 dlopen 和 dlsym 来获取函数的句柄。不幸的是,另一个程序是 Unix 可执行文件,并且将其构建为库不是一种选择。在可执行文件上尝试 dlopen() 会给出以下错误消息:
dlopen([...]/testprogram, 1): no suitable image found. Did find:
[...]/testprogram: can't map
这并不奇怪,因为 dlopen 用于库,而不是可执行文件。有没有办法让 dlopen 和 dlsym 与可执行文件一起工作?如果没有,是否有实现相同目标的替代方法?