实验环境: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函数相关推荐

  1. 【Qt】Qt中调用python接口

    在Qt程序中调用python函数从步骤 1.在pro中添加python的头文件路径和库 INCLUDEPATH += /usr/include/python3.4 LIBS += -L /usr/li ...

  2. python中execute函数_在excel中调用python函数

    效果: 通过excel引用在py文件中写好的load_settle()函数,可以快捷的获取对应的历史结算价. 使用方法: 1.首先安装office,我用的是2016版本. 2.安装python,推荐使 ...

  3. Qt中调用Python,实现基础功能、绘图、界面实现和图片爬虫

    Qt中调用Python,实现基础功能.绘图.界面实现和图片爬虫

  4. 实践在C++中调用Python函数

    目标 目标是在C++中调用Python函数,给定输入,得到输出. 主要参考: 如何实现 C/C++ 与 Python 的通信? - 知乎 C++调用Python脚本中的函数 - Achimesir - ...

  5. C++回调函数中调用Python函数出现的死锁问题调试及解决

    一.查找死锁原因: 1.使用gdb exe指令进入gdb命令行,再输入r运行可执行文件 gdb /home/sdhm/catkin_ws/devel/lib/gpd_ros/gpd_server GN ...

  6. VS2017 QT/C++ 调用python函数传图像

    原文:VS2019 C++ 调用python函数/类对象的方法_ 蜗牛在听雨的博客-CSDN博客_c++调用python函数 1.c++调用python类(传图像参数) ,编译出错,解决方法: 因为需 ...

  7. Qt中调用OpenCV函数库时Crashed问题的解决。

    这几天想在虚拟机上搭建Ubuntu的开发环境,包括了Matlab和QT(C++)的开发工具安装等,同时由于做图像处理,所以还必须要安装FFMPEG和OpenCV库.下面就讲讲我们安装时出现qt中调用O ...

  8. html调用python_flask之模板html中调用python函数方法

    一:html里面可以调用python写的函数 add_template_global(调用函数的引用,"调用函数的名字") from common.libs.UrlManager ...

  9. 【Qt】调用Python函数:无参数、单个参数、多个参数、数组参数

    一.链接配置 如果缺少头文件需要安装python3-dev: sudo apt-get install python3-dev 链接libpython3.4库,添加头文件路径,以Qt为例: INCLU ...

最新文章

  1. python获取精彩视频_python获取莫视频网站视频
  2. unity 删除子节点_【Unity文档】Realtime GI介绍(一)
  3. 关闭fedroa19开关机画面
  4. 清空list_还在为邮箱爆掉而烦恼吗?学会清空你的收件箱
  5. 深度模型压缩论文(02)- BlockSwap: Fisher-guided Block Substitution for Network Compression
  6. Vue.js新手入门指南
  7. Troubleshooting High CPU Java
  8. 2021-10-08梦笔记
  9. 【优化算法】气味代理优化算法(SAO)【含Matlab源码 1131期】
  10. 信号与系统学习笔记与代码实现3-周期信号的傅里叶级数表示
  11. 窗口大小不规范,教你怎么写默认窗口
  12. Kinect 3D视频捕捉
  13. SSID、BSSID、ESSID的区别
  14. 逆境“破局”的瑞幸咖啡
  15. 如何彻底卸载云上PDF?一个非常简单的教程
  16. 【2020】win10java(jdk安装)环境变量配置和相关问题解决
  17. .net core3.1 abp学习开始(一)
  18. Netty内置处理器整理
  19. 最美的时候你遇见了谁?
  20. 记一次拿webshell踩过的坑(如何利用PHP编写一个不包含数字和字母的后门)

热门文章

  1. 智慧社区管理系统08(维修和柱状图显现)
  2. 伪装目标检测与分割研究进展
  3. MapleClientGUI开发随笔
  4. 关于TCP连接四次握手(或者叫四次挥手)的详细总结
  5. 关于变频器的30个常见问题
  6. [计算机网络] 实验3 UDP协议分析
  7. TSPL标签打印指令的使用
  8. HTML系统总结(下)
  9. 各种深度学习框架实现猫狗大战
  10. Tensorflow迁移学习实现猫狗大战