C++调用Python3.7

前言

最近在做一个项目,涉及到了如何用C#调用Python文件。汇总了一下网上找来的资料,具体参考了这篇博客c#调用python的四种方法(尝试了四种,只详细讲解本人成功的后两种,其余方法只列出,详细用法请自行谷歌百度)
对于第一种方法,使用IronPython2.7的方法,我找到了更详细的博客C#如何调用Python执行脚本,并将执行结果显示值显示至C#界面,不过Python2.7可能无法满足我们项目的需求,当然我也找到了类似的另外两种可以使用Python3的方法,还没有试过,在这里提供给大家参考C#使用公共语言拓展(CLE)调用Python3(使用TensorFlow训练的模型)pythonnet c#调用并集成python代码
对于第三和第四种方法,因为要使用命令行窗口,而且还要考虑不同用户的python安装情况如何,在项目实际使用时效果肯定是很不好的,所以在这里不做过多的介绍,原博主也给出了他自己的源代码,大家可以自己尝试一下。
重点说一下第二种方法。我在CSDN上找了好多博客,大家的方法都大同小异,可能真的是看人品吧,我试了好几次都失败了,最后在朋友的帮助下才成功……

配置环境

这里先说一下,我是win10+VS2017+Python3.7.4。

第一步新建一个控制台项目,修改属性页

选择Debug|x64
在这里插入图片描述第一个修改的是C/C++——常规——附加包含目录:添加你所安装的Python目录下的include目录路径。
在这里插入图片描述第二个修改的是链接器——常规——附加库目录:添加你所安装的Python目录下的libs目录路径。

第二步修改Python安装目录下文件

在这里插入图片描述
找到Python安装目录,找到libs目录复制python37.lib到本目录,改名为python37_d.lib。

代码测试

现在我们可以来简单测试一下

测试用Python3语法输出“Hello World!”

我们定义一个print(),里面用了Python3的语法。

#include "pch.h"
#include <Python.h>
#include <iostream>

using namespace std;

void print()
{
	Py_Initialize();
	PyRun_SimpleString("print('Hello World!')\n");//Python3语法
	Py_Finalize();
}

int main()
{
	print();
	return 0;
}

测试用Python文件输出“Hello World!”

定义一个Hello(),里面调用了Test001.py文件。

#include "pch.h"
#include <Python.h>
#include <iostream>

using namespace std;

void print()
{
	Py_Initialize();
	PyRun_SimpleString("print('Hello Python!')\n");
	Py_Finalize();
}

void Hello()
{
	Py_Initialize();//调用Py_Initialize()进行初始化
	PyObject * pModule = NULL;
	PyObject * pFunc = NULL;
	pModule = PyImport_ImportModule("Test001");//调用的Python文件名
	pFunc = PyObject_GetAttrString(pModule, "Hello");//调用的函数名
	PyEval_CallObject(pFunc, NULL);//调用函数,NULL表示参数为空
	Py_Finalize();//调用Py_Finalize,和Py_Initialize相对应的.
}

int main()
{
	print();
	Hello();
	return 0;
}

Test001.py文件内容如下:

def Hello():
    print("Hello World!")

注意,要把Test001.py文件放到ConsoleApplication1.exe同级目录
在这里插入图片描述
在这里插入图片描述

结尾

如果一切顺利的话,那你现在已经在控制台看到输出了;如果不顺利的话,可以找找其他的博客,或者换一个方法,不要拘泥于这一个思路……
从今天开始,这个博客会把我之前做项目遇到的一些问题的解决办法总结一下,也算是一种积累吧,估计等我项目做完,会写成一本《扑街实录》。

引用

c#调用python的四种方法(尝试了四种,只详细讲解本人成功的后两种,其余方法只列出,详细用法请自行谷歌百度)
C#如何调用Python执行脚本,并将执行结果显示值显示至C#界面
C#使用公共语言拓展(CLE)调用Python3(使用TensorFlow训练的模型)
pythonnet c#调用并集成python代码

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值