在C++中使用python

在C++中使用python的时候,首先需要配置python的环境。

在此,我就不说明如何配置环境了,网络一搜都是配置方法。以下,我介绍下我在C++中是如何调用python的方法。

仅仅作为参考,有问题咱们可以一起交流。

第一步:python中的简单应用函数

test.py

    def AdditionFc(a , b):
        c = a + b
        return c
     
    def SubtractionFc(a , b):
        c = a - b
        return c

这个python中只包含了两个简单的例子。一个是加法,一个是减法。

现在需要用C++语言调用python中的两个内容。

第一步:配置好python在C++中的环境。

在此省略。。。

第二步:添加python的声明

#include "Python.h"

第二步:初始化python接口

Py_Initialize();

第三步:初始化使用的变量

    PyObject * pModule = NULL;
    PyObject * pFunc = NULL;
    PyObject *pName = NULL;

这部分可以放到后面写,写到这里完全是因为个人习惯的原因。

第四步:初始化python系统文件路径,保证可以访问到 .py文件

    PyRun_SimpleString("import sys");  
    PyRun_SimpleString("sys.path.append('./')");  

第五步:调用python文件名。

当前的测试python文件名是test.py

pModule = PyImport_ImportModule("test");

在使用这个函数的时候,只需要写文件的名称就可以了。不用写后缀。

第六步:调用函数

在此,我仅调用一个作为参考,另一个调用方法是一样的。

pFunc = PyObject_GetAttrString(pModule, "AdditionFc");

第七步:给python传参数

PyObject *pArgs = PyTuple_New(2);//函数调用的参数传递均是以元组的形式打包的,2表示参数个数

这句代码的意思是:我要给python这个函数传入两个参数。

如果AdditionFc中只有一个参数时,写1就可以了。这里只介绍函数必须有参数存在的情况,没有参数的情况会在后面章节中介绍的。

PyTuple_SetItem(pArgs, 0, Py_BuildValue("i", 2));

解释:

0:表示序号。第一个参数

i:表示传入的参数类型时int类型

PyTuple_SetItem(pArgs, 1, Py_BuildValue("i", 4));

1:表示序号。第二个参数

第八步:使用C++的python接口调用该函数

PyObject *pReturn = PyEval_CallObject(pFunc, pArgs);

第九步:接收python计算好的返回值

    int  nResult ;
    PyArg_Parse(pReturn, "i", &nResult);//i表示转换成int型变量

在这里,最需要注意的是:PyArg_Parse的最后一个参数,必须加上“&”符号。


第十步:结束python接口初始化

Py_Finalize();


原文:https://blog.csdn.net/qq_32716885/article/details/80651433 

发布了45 篇原创文章 · 获赞 7 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/weixin_42005898/article/details/88996604
今日推荐