这是一个从C应用程序中嵌入python模块执行的解决方案.它并不比通过系统调用分支/执行你的python脚本更好或更差,它只是一种不同的方式.是否最佳取决于您的背景和用法.
前段时间我编写了一种将python模块作为插件加载到C应用程序的方法,这里是interesting part.
基本上,你需要#include< Python.h>,然后Py_Initialize()来启动你的python解释器.
然后使用:PyRun_SimpleString(“import sys”);导入sys,你可以通过执行PyRun_SimpleString(‘sys.path.append(“path / to / my / module /”)’)加载你的插件.
要在C和Python之间交换值,事情会变得更难,你必须将所有C对象转换为python对象(在我的脚本中从第69行开始).
然后,您可以使用PyObject_Call_Object(…)调用您的函数,使用您创建的所有python对象作为参数.
您将获得返回值,并转换C对象中的所有值.并且不要忘记所有内存管理!
要结束python解释器,只需调用Py_Finalize()即可.
它看起来确实比它真的更难,但你必须非常小心这样做,因为它可能导致泄漏,安全问题等.