在我的程序中,我需要调用一个子进程* sub_prog *。我通过系统调用来做到这一点,例如system("sub_prog arg1 arg2...");
。够简单;所有工作正常。不幸的是,我使用的超级计算机不支持子进程的产生(由于架构,你不能在MPI中使用fork(),popen()等),这只是一个事实。因此,解决方案是将* sub_prog *(共享)库作为库函数调用,而不是作为子进程。从独立程序创建共享库 - 如何处理“int main()”?
我创建了共享库* libsub_prog.so *很好。问题是 - 我想要调用的函数是* sub_prog *本身,即,我想调用sub_prog
的main(argc,argv)
。
有关共享库的问题通常集中在共享库的成员函数调用中。但是如果我想调用主要的函数本身呢?
(我想过重命名* SUB_PROG *的int main
到另一个名称,实际上把它main
逼到另一个成员函数。但也有int main
前右deefined几个全局变量)。我是否必须将这些放在标题globals.h中,然后在每个源文件中手动插入“#include globals.h”?)
感谢所有提前。
使用'dlsym'有什么问题? –
这超出了std C++的范围,因此请为您的环境添加相应的标记。 –
将main重命名为其他内容没有任何问题;你似乎对全局变量有一些误解,你的担忧似乎没有任何意义。 – wolfgang