TX2(Linux)在Qt中调用python函数
实验环境:TX2使用JetPack-L4T-3.3-linux-x64_b39进行环境安装
详情参考:Jetpack3.3刷机
安装的python版本为3.5.2
1.创建Qt工程
在Qt中创建一个Qt Console Application,工程名字随意
在项目中添加python文件test.py。
2.修改相应文件
添加test.py代码
#!/usr/bin/env python
# -*- coding: utf-8 -*-
def hello():print("hello world!")
修改main.cpp代码
#include <QCoreApplication>
#include <Python.h>
#include <iostream>
using namespace std;
int main(int argc, char *argv[])
{QCoreApplication a(argc, argv);Py_Initialize();if ( !Py_IsInitialized() ){return -1;}PyObject* pModule = PyImport_ImportModule("test"); // 这里的test就是创建的python文件if (!pModule) {cout<< "Cant open python file!\n" << endl;return -1;}PyObject* pFunhello= PyObject_GetAttrString(pModule,"hello"); // 这里的hello就是python文件定义的函数if(!pFunhello){cout<<"Get function hello failed"<<endl;return -1;}PyObject_CallFunction(pFunhello,NULL);Py_Finalize();return a.exec();
}
完成工程文件修改后运行工程,提示main.cpp中的Python.h头文件找不到,所以需要修改工程中的.pro文件
QT += core
QT -= guiTARGET = cpp_to_python
CONFIG += console
CONFIG -= app_bundleTEMPLATE = appSOURCES += main.cppDISTFILES += \test.pyINCLUDEPATH +=/usr/include/python3.5LIBS += -L/usr/lib/python3.5/config-3.5m-aarch64-linux-gnu -lpython3.5m
最后两行的INCLUDEPATH为包含路径,找到python3的安装目录,我的是=/usr/include/python3.5
LIBS为动态库的路径,我的是/usr/lib/python3.5/config-3.5m-aarch64-linux-gnu,最后-lpython3.5m
为指定动态库名称
3.报错:意外的标记位于“;”之前
报错原因:由于QT中定义了slots,而python3中又使用slot作为变量,所以有冲突
找到object.h文件,使用sudo gedit object.h命令打开object.h文件,将
yType_Slot *slots; /* terminated by slot==0. */
改为
#undef slotsPyType_Slot *slots; /* terminated by slot==0. */
#define slots Q_SLOTS
保存退出,运行,报错问题解决。
TX2(Linux)在Qt中调用python函数相关推荐
- 【Qt】Qt中调用python接口
在Qt程序中调用python函数从步骤 1.在pro中添加python的头文件路径和库 INCLUDEPATH += /usr/include/python3.4 LIBS += -L /usr/li ...
- python中execute函数_在excel中调用python函数
效果: 通过excel引用在py文件中写好的load_settle()函数,可以快捷的获取对应的历史结算价. 使用方法: 1.首先安装office,我用的是2016版本. 2.安装python,推荐使 ...
- Qt中调用Python,实现基础功能、绘图、界面实现和图片爬虫
Qt中调用Python,实现基础功能.绘图.界面实现和图片爬虫
- 实践在C++中调用Python函数
目标 目标是在C++中调用Python函数,给定输入,得到输出. 主要参考: 如何实现 C/C++ 与 Python 的通信? - 知乎 C++调用Python脚本中的函数 - Achimesir - ...
- C++回调函数中调用Python函数出现的死锁问题调试及解决
一.查找死锁原因: 1.使用gdb exe指令进入gdb命令行,再输入r运行可执行文件 gdb /home/sdhm/catkin_ws/devel/lib/gpd_ros/gpd_server GN ...
- VS2017 QT/C++ 调用python函数传图像
原文:VS2019 C++ 调用python函数/类对象的方法_ 蜗牛在听雨的博客-CSDN博客_c++调用python函数 1.c++调用python类(传图像参数) ,编译出错,解决方法: 因为需 ...
- Qt中调用OpenCV函数库时Crashed问题的解决。
这几天想在虚拟机上搭建Ubuntu的开发环境,包括了Matlab和QT(C++)的开发工具安装等,同时由于做图像处理,所以还必须要安装FFMPEG和OpenCV库.下面就讲讲我们安装时出现qt中调用O ...
- html调用python_flask之模板html中调用python函数方法
一:html里面可以调用python写的函数 add_template_global(调用函数的引用,"调用函数的名字") from common.libs.UrlManager ...
- 【Qt】调用Python函数:无参数、单个参数、多个参数、数组参数
一.链接配置 如果缺少头文件需要安装python3-dev: sudo apt-get install python3-dev 链接libpython3.4库,添加头文件路径,以Qt为例: INCLU ...
最新文章
- python获取精彩视频_python获取莫视频网站视频
- unity 删除子节点_【Unity文档】Realtime GI介绍(一)
- 关闭fedroa19开关机画面
- 清空list_还在为邮箱爆掉而烦恼吗?学会清空你的收件箱
- 深度模型压缩论文(02)- BlockSwap: Fisher-guided Block Substitution for Network Compression
- Vue.js新手入门指南
- Troubleshooting High CPU Java
- 2021-10-08梦笔记
- 【优化算法】气味代理优化算法(SAO)【含Matlab源码 1131期】
- 信号与系统学习笔记与代码实现3-周期信号的傅里叶级数表示
- 窗口大小不规范,教你怎么写默认窗口
- Kinect 3D视频捕捉
- SSID、BSSID、ESSID的区别
- 逆境“破局”的瑞幸咖啡
- 如何彻底卸载云上PDF?一个非常简单的教程
- 【2020】win10java(jdk安装)环境变量配置和相关问题解决
- .net core3.1 abp学习开始(一)
- Netty内置处理器整理
- 最美的时候你遇见了谁?
- 记一次拿webshell踩过的坑(如何利用PHP编写一个不包含数字和字母的后门)