C++调用python程序环境搭建

一、说明

有时候一个功能用C++实现是困难的,但是用python实现却很简单。二者如果能混合使用,相互协调,岂不美滋滋。

本文中,笔者将讲述如何在Visual Stdio 2019(其他版本应该也通用)中搭建C++调用python的环境,

C++调用python语法可参考如下博客:

https://blog.csdn.net/itas109/article/details/78733478

https://blog.csdn.net/nynyvkhhiiii/article/details/17525865

QT C++调用python可参考笔者另一篇博客:

https://blog.csdn.net/qq_36290650/article/details/89684476

二、实验环境

操作系统:windows 10 64位

IDE:Visual Stdio 2019 Community

Python版本:3.7 64位

三、添加python环境变量

  • 找到python的安装目录,笔者这里是:C:\Users\ASUS\AppData\Local\Programs\Python\Python37\

注:务必确保Visual Stdio中C++调用python时使用的是此目录中的python环境,否则可能出现无法成功运行、无法调用第三方库等情况

  • 添加环境变量(此电脑-右键-属性-高级系统设置-高级-环境变量-系统变量-双击path-新建)

环境变量1:C:\Users\ASUS\AppData\Local\Programs\Python\Python37\

环境变量2:C:\Users\ASUS\AppData\Local\Programs\Python\Python37\Scripts

四、环境搭建

1、打开Visual Stdio,新建C++ 空项目,命名自定义就好

2、配置Visual Stdio Debug环境

  • 调整Visual Stdio为debug模式,由于python为64位,故调试器选择64位

  • VS - 项目 - 右键 - 属性 - C/C++ - 常规 - 附加包含目录

  • 构建debug版本python静态链接库

进入路径:C:\Users\ASUS\AppData\Local\Programs\Python\Python37\libs\,复制并原路径粘贴“python3.lib”和“python37.lib”产生副本

修改副本名称,“python3 - 副本.lib”重命名为“python3_d.lib” ; "python37 - 副本.lib"重命名为“python37_d.lib”

  • VS - 项目 - 右键 - 属性 - 链接器 - 常规 - 附加库目录

  • VS - 项目 - 右键 - 属性 - 链接器 - 输入 -附加依赖项(此处与debug版本设置不同)

3、配置Visual Stdio Release环境,与Debug环境配置相似,但不完全一样

  • 调整Visual Stdio为Release模式,由于python为64位,故调试器选择64位

  • VS - 项目 - 右键 - 属性 - C/C++ - 常规 - 附加包含目录

  • VS - 项目 - 右键 - 属性 - 链接器 - 常规 - 附加库目录

  • VS - 项目 - 右键 - 属性 - 链接器 - 输入 -附加依赖项

五、环境验证

  • 新建源文件test.cpp,内容如下
#include<iostream>
#include<Python.h>
using namespace std;

int main()
{
    //初始化python模块
    Py_Initialize();
    if (!Py_IsInitialized())
    {
        exit(1);
    }

    PyRun_SimpleStringFlags("print('hello C++ and python !	--from C++ Python37_64')", 0);    //执行python的pint函数

    Py_Finalize();
    return 0;
}
  • Visual Stdio选择Debug x64,运行

  • Visual Stdio选择Release x64,运行

  • 如果Debug和Release模式下都能正常执行,说明环境搭建完毕

注:(发布应用注意事项)

  1. 发布Release版本,应该复制C:\Users\ASUS\AppData\Local\Programs\Python\Python37\python37.dll,与程序(*.exe)放在同一目录
  2. 发布Debug版本,应该复制C:\Users\ASUS\AppData\Local\Programs\Python\Python37\python37.dll,重命名为python37_d.dll,与程序(*.exe)放在同一目录

猜你喜欢

转载自blog.csdn.net/qq_36290650/article/details/89379263