从C ++程序中调用python进行分发
时间:2020-03-05 18:49:09 来源:igfitidea点击:
我想从我的C ++程序中调用python脚本文件。
我不确定要分发给的人是否会安装python。
基本上,我正在寻找一个可以使用的具有Apache类似发行许可证的.lib文件。
解决方案
回答
Boost有一个python接口库可以为我们提供帮助。
Boost.Python
回答
在C ++应用程序中嵌入Python解释器将使我们可以使用应用程序运行Python脚本来运行Python程序。这些脚本还可以更轻松地在应用程序中调用C ++函数。如果这是我们想要的,那么前面提到的Boost库可能就是我们想要使创建链接更容易的东西。过去,我曾使用SWIG生成C ++代码的Python接口。从问题还不清楚,我们是否想要Python脚本来调用C ++程序,还是只希望C ++来调用Python。
许多Python函数使用Python解释器未内置的模块。如果Python脚本调用了这些函数,则我们将需要让用户安装Python或者在应用程序中包含python运行时文件。这将取决于我们在Python脚本中导入的模块。
回答
Boost可能是最好的选择,但是,如果我们想要更独立的功能,并且该功能可与Windows一起使用(考虑到他们是最不可能安装Python的人,这似乎是可行的),则可以使用py2exe来创建具有适合COM对象的入口点的DLL。然后,我们可以通过COM与库进行接口。 (显然,这作为跨平台解决方案根本没有用)。
回答
I would like to call python script files from my c++ program.
这意味着我们想将Python嵌入到C ++应用程序中。如在将Python嵌入另一个应用程序中所述:
Embedding Python is similar to extending it, but not quite. The difference is that when you extend Python, the main program of the application is still the Python interpreter, while if you embed Python, the main program may have nothing to do with Python — instead, some parts of the application occasionally call the Python interpreter to run some Python code.
我建议我们首先阅读在其他应用程序中嵌入Python。然后参考以下示例
- 在C / C ++中嵌入Python:第一部分
- 在C / C ++中嵌入Python:第二部分
- 在多线程C / C ++应用程序中嵌入Python
如果我们喜欢Boost.Python,则可以访问以下链接:
- 使用Boost.Python嵌入Python第1部分