天天看点

Python&C++相互混合调用编程全面实战-13C++ 调用Python的环境准备和项目初始化

作者:虚坏叔叔

早餐店不会开到晚上,想吃的人早就来了!😄

C++ 调用Python的环境准备和项目初始化

Python&C++相互混合调用编程全面实战-13C++ 调用Python的环境准备和项目初始化

前面讲解的​

​ctypes​

​​和​

​扩展库​

​的入口都是在Python端,有些项目是由C++主导的,如何引用Python作为脚本解析器呢?

一、环境准备

2种方式,​

​C++​

​​端可以完全包含​

​Python​

​​脚本,也可以分开去查找电脑上的​

​Python​

​​已安装脚本,但是查找电脑上的​

​Python​

​安装脚本风险很大,主要是版本不一致。

所以我们会将整个​

​Python​

​​编译和运行环境都包含在​

​C++​

​项目中。

  • 编译环境: 头文件、lib库文件
  • 运行环境: Python自己的动态库 pyd扩展库 Python库
  • ​Py_SetPythonHome(L”./”);​

    ​ #通过设置可以确保加载的是你想要设置的库
  • ​Py_Initialize();​

    ​ #在Py_SetPythonHome后面调用这个

二、项目初始化

2.1 创建​

​c++​

​项目

打开​

​visual studio 2015​

​​,创建​

​Win32​

​控制台应用程序

Python&C++相互混合调用编程全面实战-13C++ 调用Python的环境准备和项目初始化
Python&C++相互混合调用编程全面实战-13C++ 调用Python的环境准备和项目初始化
Python&C++相互混合调用编程全面实战-13C++ 调用Python的环境准备和项目初始化

添加一个​

​main.cpp​

​文件

Python&C++相互混合调用编程全面实战-13C++ 调用Python的环境准备和项目初始化
#include <iostream>
using namespace std;
int main(int argc, char*argv[])
{
  cout << "C++ call Python" << endl;
  getchar();
  return 0;
}      

2.2 准备Python环境

安装Python3.7环境后:

1.拷贝include文件夹

Python&amp;C++相互混合调用编程全面实战-13C++ 调用Python的环境准备和项目初始化

2.拷贝Lib文件夹

Python&amp;C++相互混合调用编程全面实战-13C++ 调用Python的环境准备和项目初始化

3.以及python37.lib

Python&amp;C++相互混合调用编程全面实战-13C++ 调用Python的环境准备和项目初始化

4.和Python37.dll

Python&amp;C++相互混合调用编程全面实战-13C++ 调用Python的环境准备和项目初始化

最后的目录如下:

Python&amp;C++相互混合调用编程全面实战-13C++ 调用Python的环境准备和项目初始化

设置项目的包含目录为

.\include      
Python&amp;C++相互混合调用编程全面实战-13C++ 调用Python的环境准备和项目初始化

修改代码调用:

  1. 设置Python的Home路径
  2. Python初始化解释器
#include <iostream>
#include <Python.h>
using namespace std;
int main(int argc, char*argv[])
{
  cout << "C++ call Python" << endl;

  // 设置Python的Home路径
  Py_SetPythonHome(L"./");

  // Python初始化解释器
  Py_Initialize();

  getchar();
  return 0;
}      

三、总结

  • C++ 调用Python的环境准备和项目初始化