gpt4 book ai didi

c++ - 从独立程序创建共享库 - 如何处理 "int main()"?

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:33:45 28 4
gpt4 key购买 nike

在我的程序中,我需要调用一个子进程*sub_prog*。我通过系统调用来做到这一点,例如系统(“sub_prog arg1 arg2 ...”);。足够简单;一切正常。

不幸的是,我使用的 super 计算机不支持子进程的生成(由于体系结构,您不能将 fork()、popen() 等与 MPI 一起使用。这只是一个事实。)。因此解决方案是使 *sub_prog* 成为一个(共享)库并将其作为库函数调用,而不是作为子进程调用。

我创建了共享库 *libsub_prog.so* 很好。问题是 - 我想调用的函数是 *sub_prog* 本身,即我想调用 sub_progmain(argc,argv)

关于共享库的问题通常围绕从共享库调用成员函数。但是,如果我想自己调用 ma​​in 函数怎么办?

(我考虑过将 *sub_prog* 的 int main 重命名为另一个名称,实质上将其 main 变成另一个成员函数。但是有几个全局变量被定义就在 int main 之前)。我是否必须将它们放在 header globals.h 中并进入并在每个源文件中手动插入“#include globals.h”?)

提前感谢大家。

最佳答案

我会通过给它一个不同的名称将它变成一个普通函数,并使用这个新名称从主可执行文件中调用它。如果您将函数声明为具有 extern "C" 链接,则在运行时使用 dlsym 应该很容易定位该函数。至于全局变量,你应该不需要做任何事情。

关于c++ - 从独立程序创建共享库 - 如何处理 "int main()"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8478784/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com