我有一个 C++ 程序foobar
,它从开始,main()
然后控制流通过第一部分,然后是程序的第二部分。如果我更改main
为foobar_main
,我可以将整个程序和一个 SWIG Python 包装器编译到一个共享库foobar.so
中,然后将其导入 Python,foobar_main
从 Python 中调用,一切正常。
第二部分通过一些可敬的 C++ 结构与第一部分进行通信。具体来说:第一部分创建一些类的一些单个对象,第二部分使用类静态方法来获取这些对象。
现在我只想main()
从 Python 运行第一部分和第二部分。也就是说,我想启动 C++ 程序foobar
,然后在第一部分完成后,运行 Python 脚本(在 C++ 中以编程方式),然后继续第二部分。
为此,我:
- 编译第二部分和一个 SWIG 包装器
foobar2.so
- 将 C++ 代码的第二部分替换为
system("python foobar2.py")
- 将修改后的 C++ 程序编译到
foobar1.so
并加载到foobar
foobar2.py
编写导入的脚本foobar1
,foobar2
然后等效于第二部分
然后我尝试运行foobar
。它不起作用,因为看起来第二部分中的例程抱怨某些应该在第一部分中完成的步骤没有完成。
这很尴尬,但显然我在理解计算机如何工作方面存在一些深刻的缺陷:) 有人能告诉我我所缺少的东西,包括可能简化上述过程吗?