分享一些c++使用python遇到的问题与解决办法
1、背景
![](https://i-blog.csdnimg.cn/blog_migrate/7d662fd960cfcfb2f7c62d409275f023.png)
python中包含许多简便的类库,而使用C++,大多数需要自己重新封装,或者使用开源库自己编译使用,如果C++可以方便的使用python,那可以节省不少时间和精力。
2、过程
2.1 python下载
参考如下连接:
https://www.python.org/
本教程使用python2.7版本进行测试。
2.2 调用准备
在安装完成之后,在python安装目录下可以找到include文件夹和python27.dll,include文件夹保存的调用python.dll所包含的接口,python27.dll是包含的python解释器,并且提供外部接口调用,可以通过C++直接调用进行python脚本的运行。
参考include文件夹中的 pythonrun.h
,可以看到很多信息,具体自行参考代码。
下面开始说明如何进行调用。
在安装完成之后,python的安装目录会存在许多文件夹和文件夹内容,并且一般的教程也需要我们将python安装目录配置进入环境变量,如果是安装包安装,安装包会将安装目录直接导入至环境变量中,导入环境变量的步骤不在此处说明。
由此可知,python的运行必须依赖其本身的目录,且这个目录可以配置,查阅接口可以看到如下信息。
PyAPI_FUNC(void) Py_SetPythonHome(char *);
PyAPI_FUNC(char *) Py_GetPythonHome(void);
PyAPI_FUNC(void) Py_Initialize(void);
PyAPI_FUNC(void) Py_Finalize(void);
其中Py_GetPythonHome
是获取当前python的工作目录,Py_SetPythonHome
是设置当前的工作目录,前面讲到了需要include文件夹和python.dll文件,现在还需要python的工作目录文件,即安装目录所有文件信息。
在安装目录下的文件其实很多都不是运行所需要的,只需要如下文件的内容即可。
DLLs
文件中包含了python的部分动态依赖库,即’.pyd’和部分c++的dll文件,’