python3 C++如何调用python的简单实例(windows)
看了一些帖子,情况各有不同,细节也参差不齐。想简单总结一下C++如何调用python的例子,为了方便,自己使用的python版本是Anaconda3集成安装下的python,实现了简单的调用过程。(为什么要提到Anaconda,如果是集成包安装python的方式,那么跟官网下单独安装python包在路径添加会有所不同)
环境:
- Windows 10
- Python 3.6
- Visual Studio 2015
配置步骤:
1. 环境变量
添加方法:win+R,输入sysdm.cpl
,选择高级
,环境变量
,在用户变量path
里面添加python根目录的路径,如果是Anaconda安装的,比如我,是C:\Users\qgl\Anaconda3
;如果你是官网单独安装的,那么就是C:\Users\qgl\pythonxx(xx:版本号)
,为了保险,我还在系统变量以及用户变量都新建了新的变量pythonhome,均是C:\Users\qgl\Anaconda3
。
2. 新建项目
新建一个win32控制台应用程序,因为Anaconda3是X86_64位,所以这里有个坑点,需要在配置管理器里将win32改为X64位。
3. 调试属性
(1)C/C++ -常规-附加包含目录:(编辑)
,Anaconda下的python写C:\Users\qgl\Anaconda3\include
,单独安装的python写C:\Users\...\pythonxx\include
(2)链接器-常规-附加库目录
,Anaconda3安装的python,写C:\Users\qgl\Anaconda3\libs
;官网下安装的python同(1)安排。
(3)链接器-输入-附加依赖项
,根据版本填写,我的是python36.lib
4. 编写C++源文件
代码如下:
// c2python_demo4.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#include "Python.h"
int _tmain(int argc, _TCHAR* argv[])
{
Py_Initialize();
PyRun_SimpleString("import sys; sys.path.append('./')"); //遍历路径下的文件
PyRun_SimpleString("import demotest"); // 引入python写好的模块 demotest.py
PyRun_SimpleString("print(demotest.hello(4))"); //带入变量,得到调用结果
Py_Finalize();
while (1) {
//# 死循环,防止程序自动退出。
int i = 0;
}
}
5. 调用python
需要在C++的项目解决方案里的源文件
新建一个demotest.py
,将写好的python模块内容copy进去。(我这样做是为了以防直接添加现有项找不到模块路径,如果其它尝试也可以的话,欢迎留言讨论)
代码如下:
import math
def hello(x):
print('Hello to c++ world!')
a = x*x
print(a)
6. 运行结果
使用Debug下的本地调试结果:
调用成功,供其他参考。