怎么在C++中调用python代码(C++,python,开发技术)

时间:2024-05-03 19:07:00 作者 : 石家庄SEO 分类 : 开发技术
  • TAG :

    一、环境设置

    windows

    VS2015

    python的话用的是acaconda自带的python环境,不同版本的acaconda自带的python不同,我的是python3.6(这一步很重要,如果使用acaconda创建的虚拟环境的python,可能会不成功)

    二、VS项目中设置

    (1)首先在acaconda中找到include文件夹和libs文件夹,如图所示

    怎么在C++中调用python代码

    然后右击C++项目,选择属性,点击VC++目录,然后在包含目录中添加include文件夹,在库目录中添加libs文件夹

    怎么在C++中调用python代码

    (2)点击链接器,然后输入,附加依赖项,添加python36_d.lib的路径

    怎么在C++中调用python代码

    因为配置为Debug,所以是添加python36_d.lib,而不是python36.lib。如果没有这个文件,直接复制python36.lib,然后命名为python36_d.lib即可。如图所示

    怎么在C++中调用python代码

    (3)python代码

    想要在C++代码中调用python中的vsdemo.py的max函数,首先python代码如图所示

    defmax(a,b):ifa>b:returnaelse:returnb

    C++代码如图所示

    #include<iostream>#include<python.h>#include"stdio.h"usingnamespacestd;intmain(){ Py_Initialize();//使用python之前,要调用Py_Initialize();这个函数进行初始化 if(!Py_IsInitialized()) { printf("初始化失败!"); return0; } PyRun_SimpleString("importsys"); PyRun_SimpleString("sys.path.append('./')");//这一步很重要,修改Python路径 PyObject*pModule=NULL;//声明变量 PyObject*pFunc=NULL;//声明变量 pModule=PyImport_ImportModule("vsdemo");//这里是要调用的文件名vsdemo.py if(pModule==NULL) { cout<<"没找到"<<endl; } pFunc=PyObject_GetAttrString(pModule,"max");//这里是要调用的函数名max PyObject*pParams=Py_BuildValue("(ss)","3","4");//两个字符串参数 char*result; PyObject*pRet=PyObject_CallObject(pFunc,pParams);//调用函数pRet是得到的结果 intres=0; PyArg_Parse(pRet,"s",&result);//转换结果的返回类型 cout<<"res:"<<result<<endl;//输出结果 system("pause"); Py_Finalize();//调用Py_Finalize,这个根Py_Initialize相对应的。 return0;}

    同时需要把python代码,即vsdemo.py文件,放到c++项目文件中,然后再运行

    三、可能会出现的问题

    (1)可能会出现找不到python36.dll的错误,可以从acaconda中找到该文件,复制到c++项目文件中即可,如图所示

    怎么在C++中调用python代码

     </div> <div class="zixun-tj-product adv-bottom"></div> </div> </div> <div class="prve-next-news">
    本文:怎么在C++中调用python代码的详细内容,希望对您有所帮助,信息来源于网络。
    上一篇:Python如何实现特定场景去除高光算法下一篇:

    12 人围观 / 0 条评论 ↓快速评论↓

    (必须)

    (必须,保密)

    阿狸1 阿狸2 阿狸3 阿狸4 阿狸5 阿狸6 阿狸7 阿狸8 阿狸9 阿狸10 阿狸11 阿狸12 阿狸13 阿狸14 阿狸15 阿狸16 阿狸17 阿狸18