文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

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

2023-06-22 06:51

关注

这篇文章主要介绍了怎么在C++中调用python代码,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。

一、环境设置

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代码如图所示

def max(a,b):    if a>b:        return a    else:        return b

C++代码如图所示

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

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

三、可能会出现的问题

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

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

感谢你能够认真阅读完这篇文章,希望小编分享的“怎么在C++中调用python代码”这篇文章对大家有帮助,同时也希望大家多多支持编程网,关注编程网行业资讯频道,更多相关知识等着你来学习!

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯