如何在Microsoft Visual Studio 中使用Cpp代码调用python代码

Microsoft Visual Studio中Cpp调用Python代码

本文介绍如何在Microsoft Visual Studio中,开发cpp项目时,调用python代码。


文章目录


前言

在使用Microsoft Visual Studio做Cpp项目开发时,有时不得不使用Python部分的代码。本文介绍在两种场景下如何调用Python代码:cpp项目生成exe文件和cpp项目生成dll动态链接库文件。


一、Cpp生成exe文件

1.1 安装python环境

值得注意的是,尽量不要使用Conda虚拟环境,因为虚拟环境有很多文件是不齐全的。这里,我们使用从python官网下载的python安装程序,进行安装。

记得安装完毕后,要配置系统变量环境。这样比如执行pip指令后,才会更新我们新安装的环境。

我安装的是Python 3.6版本,下载地址

下载完成后,在弹出的安装选项中记得选择自定义路径,并添加到系统变量环境中。

1.2 配置Microsoft Visual Studio

我的python安装路径是 D:\Users\ASUS\Python\Python36\libs

点击项目属性框,进行如下配置


1.3 进行cpp调用python代码编写

cpp 复制代码
Py_Initialize();
if (!Py_IsInitialized())
{
	printf("初始化失败!");
	return;
}
Py_Finalize();

二、生成动态链接库的情况

这种情况和上述第一部分的配置和代码编写方法都是一样的。

需要注意的是python的版本问题,如果版本不一致的话,则会报错。比如说,我们的cpp代码最后生成了a.dll文件,被b.exe所加载使用。如果b.exe使用的python版本是3.6(其具有python3.6.dll),而我们的a.dll是依赖python3.7编译的,那么就会报错。

三、QT与<Python.h>同时开发导致的不兼容问题

QT环境下集成Python出现PyType_Slot *slots;冲突问题

解决方法:

复制代码
typedef struct{     
 
      const char* name;     
 
      int basicsize;    
 
       int itemsize;     
 
      unsigned int flags;
 
      #undef slots     //这里取消slots宏定义
 
       PyType_Slot *slots;  /* terminated by slot==0. */
 
      #define slots Q_SLOTS  //这里恢复slots宏定义与QT中QObjectDefs.h中一致
 
  } PyType_Spec; 
相关推荐
田里的水稻4 分钟前
C++_python_相互之间的包含调用方法
c++·chrome·python
2501_941870569 分钟前
面向微服务熔断与流量削峰策略的互联网系统稳定性设计与多语言工程实践分享
开发语言·python
GIS之路1 小时前
GDAL 实现矢量裁剪
前端·python·信息可视化
IT=>小脑虎1 小时前
Python零基础衔接进阶知识点【详解版】
开发语言·人工智能·python
智航GIS1 小时前
10.6 Scrapy:Python 网页爬取框架
python·scrapy·信息可视化
清水白石0081 小时前
解构异步编程的两种哲学:从 asyncio 到 Trio,理解 Nursery 的魔力
运维·服务器·数据库·python
山海青风2 小时前
图像识别零基础实战入门 1 计算机如何“看”一张图片
图像处理·python
彼岸花开了吗2 小时前
构建AI智能体:八十、SVD知识整理与降维:从数据混沌到语义秩序的智能转换
人工智能·python·llm
山土成旧客2 小时前
【Python学习打卡-Day40】从“能跑就行”到“工程标准”:PyTorch训练与测试的规范化写法
pytorch·python·学习
闲人编程2 小时前
消息通知系统实现:构建高可用、可扩展的企业级通知服务
java·服务器·网络·python·消息队列·异步处理·分发器