怎么在C++中调用python代码
发表于:2024-11-17 作者:千家信息网编辑
千家信息网最后更新 2024年11月17日,这篇文章主要介绍了怎么在C++中调用python代码,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。一、环境设置windowsVS201
千家信息网最后更新 2024年11月17日怎么在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安全错误
数据库的锁怎样保障安全
网络安全教育活动设计
学习小游戏软件开发
csgo官匹匹配任意服务器
明日之后能下载其他手机服务器吗
三种数据库接口访问技术
小班网络安全ppt
服务器管理软件pc
jsp怎么查数据库结果
浙江超频服务器厂家报价
网络安全法法规定给予警告
windows下数据库安装
sql数据库 微信加密方式
网络安全信息领导组组长
青州市软件开发公司
大连成光网络技术有限公司
软件开发icon
x3650m5服务器
浙江商业软件开发费用
许昌网络技术预算
邮件服务器的主机名
软件开发大学生简历模板下载
房山区什么是网络技术承诺守信
网络安全应急值守安排
hive数据库和表的操作
郑州市联联网络技术有限公司
陕西企业软件开发中心
Arm服务器搭建安卓云手机
多媒体数据库技术的应用原理
小学电信网络安全教育ppt
软件开发就是软件工程师吧