怎么在C++中调用python代码
发表于:2024-11-16 作者:千家信息网编辑
千家信息网最后更新 2024年11月16日,这篇文章主要介绍了怎么在C++中调用python代码,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。一、环境设置windowsVS201
千家信息网最后更新 2024年11月16日怎么在C++中调用python代码
这篇文章主要介绍了怎么在C++中调用python代码,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。
一、环境设置
windows
VS2015
python的话用的是acaconda自带的python环境,不同版本的acaconda自带的python不同,我的是python3.6(这一步很重要,如果使用acaconda创建的虚拟环境的python,可能会不成功)
二、VS项目中设置
(1)首先在acaconda中找到include文件夹和libs文件夹,如图所示
然后右击C++项目,选择属性,点击VC++目录,然后在包含目录中添加include文件夹,在库目录中添加libs文件夹
(2)点击链接器,然后输入,附加依赖项,添加python36_d.lib的路径
因为配置为Debug,所以是添加python36_d.lib,而不是python36.lib。如果没有这个文件,直接复制python36.lib,然后命名为python36_d.lib即可。如图所示
(3)python代码
想要在C++代码中调用python中的vsdemo.py的max函数,首先python代码如图所示
def max(a,b): if a>b: return a else: return b
C++代码如图所示
#include#include #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++
函数
文件夹
篇文章
项目
环境
目录
结果
不同
重要
变量
同时
路径
c++
成功
两个
价值
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
数据库中人员名字重复的如何区别
网络安全进校园成都市
智能家居与服务器的关系
白链属于那哪家数据库公司的产品
金牌科技互联网
网络技术员岗位工作职责
网络安全知识板报图片
数据库并发控制技术的产生动机
手机考勤软件开发
易管网软件开发公司
网络安全教育教案 ppt
酒店共用网络安全吗
化工网络技术
南京创新软件开发创新服务
数据库分变量
山东省济南服务器经销商
cs玩家怎么看服务器参数
专家数据库系统
晶体结构数据库 PDB
cs1.6单挑服务器
数据库技术中的数据处理
软件开发一年一跳槽
朝阳直播软件开发公司
cclink板卡插服务器接口
数据库大表还是单表
c语言编程用什么软件开发游戏
网络安全具体学什么
上海日腾软件开发
张店管理软件开发公司
大数据软件开发教程