22 Qt for android里调用so动态库

Qt Andriod 在Windows系统下编译和添加动态库(一) Qt Andriod 在Windows系统下编译和添加动态库 文章目录Qt Andriod 在Windows系统下编译和添加动态库前言一、Qt 在Windows 系统下如何编译Andriod使用的动态库?二、Qt for Andriod如何在Windows开发环境下调用动态库1.修改.pro文件2.构建时添加库文件和将库文件一起打包3.在新的项目中调用该库总结 日期 作者 版本 说明 2020.12.15 Sleep Tiger V1.0 Release as V1.0 前言 因为项 阅读详情

因大部分android设备都是用arm 处理器,所以动态库都得用arm的编译器才可以. 而且还得用ndk里提供的arm编译器.
ndk里编译器在很深的目录里,它里面有提供一个脚本,把编译器及本身所有的动态库全部集中生成到指定的路径.
  我的ndk目录在"/disk3/adt-bundle-linux/android-ndk-r8d"

  在终端进入ndk目录后:
    ./build/tools/make-standalone-toolchain.sh --install-dir=/opt/android_arm_gcc/

  //执行完毕后, android的编译器及它本身具有的动态库就在"/opt/android_arm_gcc/"目录下了

  设置环境变量:
    vim  ~/.bash_profile  //在最后增加语句
        export PATH=/opt/android_arm_gcc/bin:$PATH
        保存退出后,注消系统后重新登录,以便环境变量生效.

  环境变量生效后,就可以用里面的编译器编译自己的动态库或者移植第三方的动态库.

  我这里是自己编写一个非常简单的测试动态库:
  动态库源码在"/disk3/qt_android_so"

  myadd.h
    #ifndef __MYADD_H
    #define __MYADD_H

    #if defined(__cplusplus)
    extern "C" {
    #endif

        int myadd(int a, int b);

    #if defined(__cplusplus)
    }
    #endif


    #endif /* __MYADD_H */


  myadd.c
    int myadd(int a, int b)
    {
        return a+b;
    }

  编译:
    arm-linux-androideabi-gcc myadd.c -shared -o libmyadd.so

然后在qt源码工程的顶层目录(即pro文件的上一级)右键菜单–> “Add Library” –> “External Library”

这里写图片描述

在上面的窗口填入相应的路径.
确认后,会在pro文件里多生成引用库头文件及库的语句:

unix:!macx: LIBS += -L$$PWD/../../disk3/qt_android_so/ -lmyadd

INCLUDEPATH += $$PWD/../../disk3/qt_android_so
DEPENDPATH += $$PWD/../../disk3/qt_android_so

但是注意,还得通过右键”Add Existing Files …” 导入库头文件

最后还得在下面的界面里加入库,这样库才会与程序一起打包
这里写图片描述

工程里使用库的代码:

#include "myadd.h"

void MyWin::on_pushButton_clicked()
{
    QString str1 = ui->lnd_val1->text();
    QString str2 = ui->lnd_val2->text();
    QString str("%1");

    int ret = myadd(str1.toInt(), str2.toInt());
    ui->lnd_ret->setText(str.arg(ret));

}

编译器配置的参考: http://blog.sina.com.cn/s/blog_bdc128580102uwgd.html

避坑指南:解决Qt for Android编译qtmqtt时的常见警告与so库部署问题 本文详细解析了Qt for Android平台下MQTT模块编译与部署的常见问题及解决方案。从编译环境准备、警告处理到动态库部署策略,提供了全面的避坑指南,特别针对Android平台的ABI架构和权限系统进行了优化建议,帮助开发者高效完成QT5.9到Android的MQTT移植工作。 阅读详情

相关推荐

QT学习笔记

QT学习笔记

weixin_52938172的博客 1491

qt for android交叉编译环境配置

1、环境介绍: A、windows 10 64位, 非专业版的,我也配置了很久,也怀疑是系统问题,后面还是没重新系统,事实证明与系统无关。 B、Qt版本 C、目前编译出的APK是放在 rk3288 的核心板上运行的, 核心运行的是android 7.1的内核 2、安装所需要文件 以下android开发环境测试只有在Qt 5.13.2中能够完全成功,能够正常编译烧写APP。测试了Qt 5.9.9和5.12.0失败; ADBDriverInstaller.ex...

qq853728579的专栏 867

安卓NDK开发实战:从JNI到OpenCV集成的性能优化指南

在移动开发领域,性能优化与跨平台代码复用是开发者面临的核心挑战。JNI(Java Native Interface)作为Java与C/C++交互的桥梁,其原理在于通过定义一套标准的函数命名规则和数据类型映射,实现两种语言间的无缝调用。这项技术的核心价值在于能够直接执行原生机器码,从而突破虚拟机限制,为计算密集型任务带来显著的性能提升,并实现对庞大C/C++生态库的高效复用。在音视频处理、图像识别、游戏引擎等高要求应用场景中,这种能力至关重要。例如,通过NDK集成OpenCV库,开发者可以直接在安卓应用中调用

weixin_33991418的博客 388

Windows10下 交叉编译aarch64(ARMv8)架构Qt库

使用了两位大佬的方法 https://blog.youkuaiyun.com/y_q_m/article/details/120319055 https://blog.youkuaiyun.com/hanxv_1987/article/details/104671950 第一步:在Windows10下,下载并安装QtCreator 1、Qt版本:Qt5.12.11。 2、下载链接:https://download.qt.io/official_releases/qt/5.12/5.12.11/ 3、安装过程:略。本文安装在“D:

Mintary的博客 1万+

Qt应用集成Google拼音输入法:跨平台中文输入解决方案

输入法作为人机交互的核心组件,其底层实现依赖于输入法引擎与图形界面框架的深度集成。Qt框架通过QPlatformInputContext接口提供了输入法插件的扩展机制,使开发者能够绕过系统输入法服务的限制,实现自主可控的文本输入体验。这一技术方案在需要高度稳定性和一致性的工业控制、专业软件等场景中具有重要价值。通过集成成熟的Google拼音输入法引擎(libgooglepinyin),开发者可以为Qt应用构建独立的内置中文输入功能,确保跨平台环境下的输入体验统一。本文以Qt输入法插件和Google拼音引擎为

weixin_30824479的博客 415

Android NDK与Gradle配置疑难杂症实战指南

本文深入解析Android NDK与Gradle配置中的常见问题,包括版本兼容性、libomp.so缺失、Gradle同步失败等疑难杂症,提供实战解决方案和优化技巧,帮助开发者高效完成原生开发环境配置。

weixin_30954817的博客 341

Android NDK 编译 openssl 动态库

1.序 最近在使用Qt for Android完成一个简单的App,其中有使用到QNetworkAccessManager组件,在使用时发现,如果访问https时会出现找不到动态链接库,查询资料发现现在的Android NDK中不存在openssl,这里我们就需要手动编译。在编译的过程中发现,我使用的Qt5.9.3依赖的openssl库版本不能太高,尝试2.0.x版本是不能使用的,最终找到了Qt兼...

Quard_D的博客 2569

QT重制版深度评测:现代化重构框架的安装、测试与部署实战

跨平台GUI开发框架是构建桌面应用程序的核心技术,其通过封装底层系统API,提供统一的编程接口,实现“一次编写,多平台运行”的能力。这类框架的核心原理在于抽象化窗口系统、事件处理和图形渲染,其技术价值在于大幅提升开发效率、降低维护成本。在工业控制、嵌入式界面、数据可视化等应用场景中,开发者常面临框架部署复杂、依赖管理繁琐和打包分发困难等工程挑战。针对这些痛点,衍生出了对经典框架进行现代化重构和优化的版本,例如本文探讨的QT重制版项目。该项目旨在通过提供更轻量、更易部署的解决方案,优化开发体验,并系统性地解决

weixin_34289454的博客 380

​Qt+openCV学习笔记(十三)openCV4.5.5+android-ndk-r22-windows-x86_64编译动、静态库

前言: 因工作需要,要测试openCV在android的拉流,笔者记录下本次编译过程 以编译arm64-v8a库为例,同时增加附加库 本次假设读者已经正常安装Qt 一、安装需要的软件 1.安装git 这方便教程很多,不再重复。笔者使用的是git2.33 2.安装cmake 这个教程也很多,但笔者没有安装,使用的是Qt安装时,下载的 3.android NDK 下载地址:不受支持的 NDK 下载 | Android NDK | Android Developers 笔者没有单......

aggs1990的专栏 1724

从零到一:海康工业相机SDK在跨平台开发中的实战指南

本文详细介绍了海康工业相机SDK在跨平台开发中的实战应用,涵盖Windows、Linux、MacOS和Android四大平台的开发环境配置、SDK版本选择及多语言API适配策略。通过性能优化和图像采集方案设计,帮助开发者高效实现工业视觉系统的跨平台部署,特别适合智能制造领域的二次开发需求。

weixin_29185493的博客 494

QT 跨平台开发(二)之现有项目在linux和windows下利用NDK 和 Cmake 编译为android so库

导航 一. so库编译 1. 命令行模式下编译 2.QTCreator 工具编译 上一篇:windows下qtcreator生成可供android调用的so库 下一篇: 准备工作 在开始之前我们需要学习并做一些准备工作: QT 函数导出 QT、QtCreator for android 、ndk(ndk下带有gcc和lang工具,推荐下载r16版本)、cmake、sdk、jdk 安...

q2nAmor 1746

Android 第一季

1、Android NDK动态库的调用 NDK动态库的调用分两种情况。 第一种是:so库和调用程序在同一个目录和源程序 通过同一个mk文件来编译; 另外一种情况是so是外部已经编译好了的,调用程序加载调用。下面我们就来分析下面2种so的调用情况:   第一部分: 内部so调用   A. 先看下工程的目录: test01.java :Java文件   test01.c 主so,生成

蜗牛的远航 4011

Qt 移植到Android

Qt 移植到Android移植到Android 移植到Android 在本节中,我们将现有的Qt应用程序移植到Android并将其部署到设备。 大多数Qt应用程序应易于移植到Android,除非它们依赖于Android不支持的特定硬件或软件功能。如果您的应用程序未使用任何此类功能,则部署可能是唯一需要对应用程序进行一些更改的步骤。 像大多数UI应用程序一样,Qt应用程序也依赖于资源,例如图像,图标,翻译文件等。这些资源必须在设备上可用,因为它们对于应用程序正常运行是必需的。 最方便的选择是将资源捆绑到一个q

希望我的博客,能帮上你解决学习中工作中所遇到的问题 2722

​Qt+openCV学习笔记(十五)openCV4.6.0+android-ndk-r22-windows-x86_64编译动、静态库

前言:原本不想写本次教程的,但笔者发现,编译arm64-v8a与之前的步骤基本相同,但编译armeabi-v7a有点不同,所以笔者记录下本次编译过程以编译armeabi-v7a库为例,同时增加附加库本次假设读者已经正常安装Qt1.安装git这方便教程很多,不再重复。笔者使用的是git2.332.安装cmake这个教程也很多,但笔者没有安装,使用的是Qt安装时,下载的3.android NDK下载地址:不受支持的 NDK 下载 | Android NDK | Android Developers笔者没

aggs1990的专栏 1464

GDAL多平台版本库选型与编译避坑指南

地理空间数据抽象库(GDAL)是跨平台GIS开发中的核心基础组件,几乎所有遥感影像处理、矢量数据解析和地图服务项目都深度依赖其稳定运行。然而,GDAL在不同平台上的版本库却呈现出明显差异:Windows上的DLL与Linux下的SO文件因ABI不通用而无法互相替代,Android平台的交叉编译又受NDK工具链和依赖链制约。理解版本号与库文件名的映射关系、掌握CMake与NDK的编译配置,是保障跨平台项目顺利交付的关键技术价值。在实际工程场景中,从Win64到Linux服务器,从Android嵌入式设备到桌面

weixin_34279246的博客 388

QT二维码识别实战:从编译失败到工业级稳扫

二维码识别是嵌入式与桌面端视觉应用的基础能力,其本质并非简单调用解码API,而是涉及图像采集、预处理、动态解码与硬件协同的实时流水线。技术原理上需理解QT多媒体框架与OpenCV/QZXing的内存对齐、ABI兼容性及视频流帧率控制等关键机制;工程价值体现在降低CPU负载、提升识别鲁棒性与跨平台稳定性;典型应用场景包括工业产线扫码、冷链仓储识别及多摄像头并发处理。本文聚焦QT环境下二维码识别的落地瓶颈,深入解析QZXing集成、摄像头驱动适配与ROI动态优化等核心问题,覆盖QT5/6兼容性、V4L2协议冲突

weixin_29185493的博客 277

QT跨平台开发环境配置与ARM嵌入式移植实战指南

跨平台应用开发框架是构建可在多种操作系统上运行软件的技术基础,其核心原理在于通过抽象层封装系统特定接口,实现“一次编写,到处编译”。在嵌入式与桌面应用领域,这类框架能显著提升开发效率并确保界面一致性。其技术价值体现在降低多平台维护成本、加速产品迭代以及统一用户体验。典型的应用场景包括工业上位机、车载信息娱乐系统、智能设备人机界面等。本文聚焦于广泛使用的**QT框架**,深入探讨其**交叉编译**环境的系统化搭建方法,详细解析从主机工具链配置、源码编译参数优化到目标板库文件部署与运行时调试的全链路实践,旨在帮

weixin_34232744的博客 500

Qt5实战入门:CMake构建+跨平台部署+信号槽避坑指南

Qt5是主流跨平台GUI开发框架,其核心价值在于一次编写、多端部署的能力。理解Qt构建系统(尤其是CMake替代qmake)、掌握信号槽的线程安全写法、解决串口通信与Android/iOS环境配置等实际问题,是开发者从入门迈向工程落地的关键跃迁。本文聚焦Qt5开发中最常卡点的三大维度:构建可靠性(避免Kit无效、依赖缺失)、运行稳定性(规避野指针、DPI适配、拖拽失效)和部署可行性(Windows一键打包、ARM交叉编译、AppImage生成),结合真实工业上位机与嵌入式场景,提供可直接复用的代码模板与防呆

weixin_34198453的博客 548
上一篇: 02 内嵌汇编的语法及最最常用的arm汇编指令
下一篇: 03 arm程序调用标准(APCS)
jklinux
博客等级 码龄10年 1060粉丝 276原创
评论 23
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值