温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

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

发布时间:2021-12-30 16:06:30 来源:亿速云 阅读:164 作者:小新 栏目:开发技术

这篇文章主要介绍了怎么在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.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是得到的结果
    	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代码”这篇文章对大家有帮助,同时也希望大家多多支持亿速云,关注亿速云行业资讯频道,更多相关知识等着你来学习!

    向AI问一下细节

    免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

    AI