QT(6.5) cmake构建C++编程,调用python
一、注意事项
- explicit
c++中,一个参数的构造函数(或者除了第一个参数外其余参数都有默认值的多参构造函数),承担了两个角色,构造器、类型转换操作符,
c++提供关键字explicit,阻止转换构造函数进行的隐式转换的发生,声明explicit的构造函数不能在隐式转换中使用。 - c++ 函数前面和后面 使用const 的作用
前面使用const 表示返回值为const;
后面加 const表示函数不可以修改class的成员;
const成员函数可以被非const对象和const对象调用;
非const成员函数只能被非const对象调用; - 类外补充函数的定义要加作用域限定符::
二、重要知识:cmake
在QT中选择cmake方式构建c++项目,最好提前了解cmake相关知识,以方便理解如何导入外部库,推荐学习视频链接:B站:爱编程的大丙
重要细节:静态库的链接要放在add_executable之前
三、c++代码调用python步骤
- 设置python配置
CMakeList.txt文件中输入python文件的相关信息:头文件夹路径、库文件夹路径、需要连接的库文件名称(有没有.lib后缀都可)
include_directories(C:/programming/anaconda3/envs/pytorch/include)
link_directories(C:/programming/anaconda3/envs/pytorch/libs)
link_libraries(python3)
link_libraries(python38)

2. c++代码(.cpp)中调用python前初始化
#include <Python.h>Py_SetPythonHome(L"python.exe所在文件夹路径,即python安装路径");
//调用前必须初始化python解释器
Py_Initialize();
if(!Py_IsInitialized()){qDebug()<<"初始化失败";return 0;}
// 执行 python 语句
// 导入sys模块设置模块地址,以及python脚本路径
PyRun_SimpleString("import os");
PyRun_SimpleString("print('你好')");
// 加载 python 脚本
PyObject *pModule = PyImport_ImportModule("pythonFileName");
if (pModule == NULL) {// 模块导入失败,处理错误qDebug() << "脚本加载失败";} else {qDebug() << "脚本加载成功";// 创建函数指针PyObject* pFunc = PyObject_GetAttrString(pModule, "functionName"); // 方法名称if (pFunc == NULL) {// 函数导入失败,处理错误qDebug() << "函数创建失败";}else {qDebug() << "函数创建成功";// 调用无参函数PyObject *result = PyObject_CallObject(pFunc, NULL); // 或者调用有参函数// 创建函数参数PyObject* args = Py_BuildValue("(i,s)", 110, "hello"); // 参数为整数 110 和字符串 "hello"// s 将C字符串转换成Python对象,如果C字符串为空,返回NONE // z: 类似于 s,但允许转换为 NULL(Python 的 None)// c 将C类型的char转换成长度为1的Python字符串对象 // b: C unsigned char,将布尔值转换为 0 或 1// i 将一个C类型的int转换成Python int对象 // k: C unsigned long,转换为无符号长整数// l 将C类型的long转换成Pyhon中的int对象 // f 将C类型的float转换成python中的浮点型对象 // d 将C类型的double转换成python中的浮点型对象 // O 通用对象引用,接收任意 Python 对象而不转换// O!: 类型对象和转换标志,用于接收特定类型的 Python 对象// O&: 自定义回调函数,用于自定义对象转换// (ii):两个 C 整型变量构成的元组或列表// [ii]:两个 C 整型变量构成的列表 // {ss}:键值对都是 C 字符串的字典// #:s, #i, #d 等:带有长度指示的字符串、整数或浮点数// n: 接收 None,检查参数是否为 NonePyObject *result = PyObject_CallObject(pFunc, args); // 检查并处理有参函数调用的返回结果if (result == NULL) {// 处理错误qDebug() << "函数调用失败";} else {// 使用返回值const char *result_str;if (!PyArg_Parse(result, "s", &result_str)) {// 错误处理:无法将Python对象转换为字符串} else {// 使用result_str}// 释放引用计数Py_DECREF(result);}// 释放参数元组Py_DECREF(args);// 释放函数指针Py_DECREF(pFunc);// 不再需要模块时,减少引用计数Py_DECREF(pModule);}
}
// 释放python所用内存
Py_Finalize();
未完待续
相关文章:
QT(6.5) cmake构建C++编程,调用python
一、注意事项 explicit c中,一个参数的构造函数(或者除了第一个参数外其余参数都有默认值的多参构造函数),承担了两个角色,构造器、类型转换操作符, c提供关键字explicit,阻止转换构造函数进行的隐式转换的发生&#…...
Java开发从入门到精通(九):Java的面向对象OOP:成员变量、成员方法、类变量、类方法、代码块、单例设计模式
Java大数据开发和安全开发 (一)Java的变量和方法1.1 成员变量1.2 成员方法1.3 static关键字1.3.1 static修饰成员变量1.3.1 static修饰成员变量的应用场景1.3.1 static修饰成员方法1.3.1 static修饰成员方法的应用场景1.3.1 static的注意事项1.3.1 static的应用知识…...
通过 Socket 手动实现 HTTP 协议
你好,我是 shengjk1,多年大厂经验,努力构建 通俗易懂的、好玩的编程语言教程。 欢迎关注!你会有如下收益: 了解大厂经验拥有和大厂相匹配的技术等 希望看什么,评论或者私信告诉我! 文章目录 一…...
探索数据结构:双向链表的灵活优势
✨✨ 欢迎大家来到贝蒂大讲堂✨✨ 🎈🎈养成好习惯,先赞后看哦~🎈🎈 所属专栏:数据结构与算法 贝蒂的主页:Betty’s blog 1. 前言 前面我们学习了单链表,它解决了顺序表中插入删除需…...
记录一次服务器内存使用率过高达到90%告警问题排查。
目录 一、前言二、问题排查处理三、 结尾 👩🏽💻个人主页:阿木木AEcru 🔥 系列专栏:Docker容器化部署系列 💹每一次技术突破,都是对自我能力的挑战和超越。 一、前言 一大早就有一…...
基于react native的自定义轮播图
基于react native的自定义轮播图 效果示例图示例代码 效果示例图 示例代码 import React, {useEffect, useRef, useState} from react; import {Animated,PanResponder,StyleSheet,Text,View,Dimensions, } from react-native; import {pxToPd} from ../../common/js/device;c…...
Jetson入坑记实
关于虚拟环境python与系统自带python目录下dist-packages与site-packages dist-packages:系统自带的python site-packages:自己安装的python 详细:dist-packages与site-packages_dist-packages和site-packages-CSDN博客 rtsp获取视频流(没…...
算法系列--递归
一.如何理解递归 递归对于初学者来说是一个非常抽象的概念,笔者在第一次学习时也是迷迷糊糊的(二叉树遍历),递归的代码看起来非常的简洁,优美,但是如何想出来递归的思路或者为什么能用递归这是初学者很难分析出来的 笔者在学习的过程中通过刷题,也总结出自己的一些经验,总结来…...
【JS】替换文本为emjio表情
最终效果展示 T1 T2 T3 T4 需求 把评论你好帅啊啊啊[开心][开心],[开心] 替换为图片 思路 正则match提取[开心]到一个数组数组去重创建img标签img标签转文本. 。例:(el.outerHTML),将el元素转文本字符串replaceAll…...
Solr完结版
Solr是基于Apache Lucene构建的用于搜索和分析的开源解决方案。提供可拓展索引、搜索功能、高亮显示和文字解析功能。本质是一个java web项目,内嵌Jetty服务器,安装方便。 请求Solr中的控制器,处理完数据后把结果相应给客户端 正向索引&#…...
外包干了5天,技术退步明显。。。。
说一下自己的情况,本科生,19年通过校招进入广州某软件公司,干了接近4年的功能测试,今年年初,感觉自己不能够在这样下去了,长时间呆在一个舒适的环境会让一个人堕落!而我已经在一个企业干了四年的功能测试&a…...
Cronos zkEVM 基于 Covalent Network(CQT)数据可用性 API,推动其 Layer2 DeFi 生态更好地发展
在一项旨在显著改善 DeFi 生态的战略举措中,Cronos 与 Covalent Network(CQT)携手合作,以期待 Cronos zkEVM 的推出。这一整合,预计将进一步降低以太坊生态系统的交易成本、提升交易速度,并带来更好的交易体…...
基于SpringBoot的高校办公室行政事务管理系统
采用技术 基于SpringBoot的高校办公室行政事务管理系统的设计与实现~ 开发语言:Java 数据库:MySQL 技术:SpringBootMyBatis 工具:IDEA/Ecilpse、Navicat、Maven 页面展示效果 功能清单 教师信息管理 办公室管理 办公物资管…...
Linux系统及操作 (04)
Linux系统及操作 (03) RPM 软件包 网络下载对应软件包光盘镜像文件,具备软件包 Windows 系统软件包的管理 可以指定安装位置安装是集中安装到一个目录Linux 系统 与 Windows 系统相反。 常见的软件包(生态)类型 电脑入侵99%都是通过软件…...
粒子群算法 - 目标函数最优解计算
粒子群算法概念 粒子群算法 (particle swarm optimization,PSO) 由 Kennedy 和 Eberhart 在 1995 年提出,该算法模拟鸟群觅食的方法进行寻找最优解。基本思想:人们发现,鸟群觅食的方向由两个因素决定。第一个是自己当初飞过离食物…...
关于MySQL数据库的学习3
目录 前言: 1.DQL(数据查询语言): 1..1基本查询: 1.2条件查询: 1.3排序查询: 1.3.1使用ORDER BY子句对查询结果进行排序。 1.3.2可以按一个或多个列进行排序,并指定排序方向(升序ASC或降序DESC&#…...
笔试题——得物春招实习
开幕式排练 题目描述 导演在组织进行大运会开幕式的排练,其中一个环节是需要参演人员围成一个环形。演出人员站成了一圈,出于美观度的考虑,导演不希望某一个演员身边的其他人比他低太多或者高太多。 现在给出n个参演人员的身高,问…...
动手做简易版俄罗斯方块
导读:让我们了解如何处理形状的旋转、行的消除以及游戏结束条件等控制因素。 目录 准备工作 游戏设计概述 构建游戏窗口 游戏方块设计 游戏板面设计 游戏控制与逻辑 行消除和计分 判断游戏结束 界面美化和增强体验 看看游戏效果 准备工作 在开始编码之前…...
【极简无废话】open3d可视化torch、numpy点云
建议直接看文档,很多都代码老了,注意把代码版本调整到你使用的open3d的版本: https://www.open3d.org/docs/release/tutorial/visualization/visualization.html 请注意open3d应该已经不支持centos了! 从其他格式转换成open3d…...
C语言经典算法-6
文章目录 其他经典例题跳转链接31.数字拆解32.得分排行33.选择、插入、气泡排序34.Shell 排序法 - 改良的插入排序35.Shaker 排序法 - 改良的气泡排序 其他经典例题跳转链接 C语言经典算法-1 1.汉若塔 2. 费式数列 3. 巴斯卡三角形 4. 三色棋 5. 老鼠走迷官(一&…...
从LCD到MicroLED:屏幕技术进化史,聊聊那些改变我们观看方式的‘光’
从LCD到MicroLED:屏幕技术进化史,聊聊那些改变我们观看方式的‘光’ 在2007年第一代iPhone发布会上,乔布斯举起那块3.5英寸屏幕时,很少有人意识到这不仅是智能手机革命的开始,更是一场显示技术的文艺复兴。从厚重CRT显…...
MoviePilot:打造终极NAS媒体库自动化管理神器
MoviePilot:打造终极NAS媒体库自动化管理神器 【免费下载链接】MoviePilot NAS媒体库自动化管理工具 项目地址: https://gitcode.com/gh_mirrors/mo/MoviePilot MoviePilot是一个开源NAS媒体库自动化管理工具,专为电影爱好者设计,提供…...
“先读后生成“统一范式:记忆驱动的AI交互模式
"先读后生成"统一范式:记忆驱动的AI交互模式 ——基于RAG与提问工程化融合的通用交互框架 摘要 当前大语言模型产业应用中,系统侧检索增强生成(RAG,M6赛道) 与用户侧提问工程化(M2赛道) 长期处于割裂状态:RAG聚焦系统侧知识的标准化沉淀,却无法适配用户的个…...
钰泰ETA9742 支持边充边放 移动电源充电集成芯片
各位好,今天给大家介绍一款在便携充放电领域应用很广泛的芯片 ——ETA9742。首先从核心定位来说,ETA9742 是一款开关式锂离子电池充电器,专门针对 4.2V 规格的锂电池设计,采用 ESOP8 封装,是电池充放电场景里的一体化解…...
Cogito-v1-preview-llama-3B效果对比:在ChineseGLUE榜单全面领先
Cogito-v1-preview-llama-3B效果对比:在ChineseGLUE榜单全面领先 最近,一个名为Cogito v1预览版的新模型系列在技术社区里引起了不小的讨论。这个模型最吸引人的地方在于,它在多个标准测试中都表现出了超越同级别开源模型的能力,…...
Graphormer开源镜像多场景落地:国家实验室AI for Science基础设施建设案例
Graphormer开源镜像多场景落地:国家实验室AI for Science基础设施建设案例 1. 项目概述 Graphormer是一种基于纯Transformer架构的图神经网络模型,专门为分子图(原子-键结构)的全局结构建模与属性预测而设计。该模型在OGB、PCQM…...
如何快速修复老游戏兼容性:DDrawCompat终极使用指南
如何快速修复老游戏兼容性:DDrawCompat终极使用指南 【免费下载链接】DDrawCompat DirectDraw and Direct3D 1-7 compatibility, performance and visual enhancements for Windows Vista, 7, 8, 10 and 11 项目地址: https://gitcode.com/gh_mirrors/dd/DDrawCom…...
优峰技术:中心波长可调滤波器在光通信测试中的应用与选型
在1.6T光模块、CPO、DWDM系统快速发展的今天,中心波长可调滤波器已经成为光通信测试、光谱分析、信道筛选的关键器件。作为光通信测试领域深耕多年的企业,深圳优峰技术结合国际主流产品标准与自研技术,推出高性能中心波长可调滤波器及配套测试…...
HPH的构造:核心部件与工作原理
在最近的这几天当中,海口正在举办的第六届中国国际消费品博览会呈现出了很高的热度,在科技消费展区之内,AI赋能的各种各样的新品集中进行了亮相,其覆盖了智能交互、穿戴设备以及智慧健康等多个不同的赛道,前沿科技同消…...
craftzdog-homepage性能优化:10个提升网站速度的技巧
craftzdog-homepage性能优化:10个提升网站速度的技巧 【免费下载链接】craftzdog-homepage My homepage 项目地址: https://gitcode.com/gh_mirrors/cr/craftzdog-homepage 在当今数字化时代,网站性能优化已成为提升用户体验和搜索引擎排名的关键…...
