作为 C/C++ 程序员,有时候我们希望在安卓上运行从 C/C++ 生成的可执行程序,而不是在 Java 中通过 jni 的方式来调用 C 动态库。有两个途径可以达到这个目的:一

作为 C/C++ 程序员,有时候我们希望在安卓上运行从 C/C++ 生成的可执行程序,而不是在 Java 中通过 jni 的方式来调用 C 动态库。有两个途径可以达到这个目的:一个是使用安卓 NDK 提供的工具链直接编译 C 代码(其中又有两种方式,使用 android 的 mk 文件,使用自己编写的 Makefile );一个是使用 Qt 5.2 for Android ,Qt Creator 可以生成安卓版本。这里我们说 Qt for Android,不说 NDK 方式。

Qt for Android 的环境搭建,可以参考我之前的博文《Windows下Qt 5.2 for Android开发入门》。

一旦你生成了一个项目,,配置好了工具链,就可以在 Qt Creator 的项目标签中选择安卓版本进行编译。不过默认编译出来的是动态库, so 文件。而我们想要可执行程序。这个可以通过修改 Makefile 来完成,纯手动的方式有以下几个步骤:

使用原生程序比使用 APK + JNI 方式会有一个好处: Java 虚拟机无法控制原生程序占用的内存,而 APK + JNI 的方式, C 代码和 Java 代码共享整个 Java 虚拟机的内存, C 代码会受到虚拟机内存大小的限制。

如果嫌上面的步骤麻烦(每次 Qt 工程变化都要手动修改 Makefile ,比如往添加了文件等),可以在 Qt Creator 中给工程添加一个构建步骤(自动修改 Makefile ),顺序放在 qmake 之后,这样每次 qmake 生成了 Makefile ,自定义的构建步骤就会自动执行来修改 Makefile ,在 make 时应用修改,最终生成可执行文件。下图是我的一个工程的配置:

至于怎么自动修改 Makefile ,可以使用一些开源的文本工具(如 sed for windows 等),这里就展开了。我是自己写了个小程序,专用的,不通用,也不提了。

c语言与qt编写安卓,Windows下Qt for Android 编译安卓C语言可执行程序相关推荐

  1. Qt学习之Windows下Qt应用程序打包成exe安装包

    本文介绍如何将exe可执行程序打包成exe安装包,打包完的安装包可以直接在Windows下安装,需要用到 Inno Setup 安装程序制作软件工具,工具下载完之后直接安装即可. 工具下载: 打包安装 ...

  2. QT程序在windows下部署发布

    转载:http://www.cnblogs.com/Fan_Fan/archive/2010/05/29/1746860.html QT程序在windows下部署发布 以下包括了部分网上收集的,以及q ...

  3. Windows下Qt程序打包

    Windows下Qt程序打包 将windeployqt.exe 目录添加到系统环境变量 windeployqt.exe目录如下: 命令行打包 1.打开命令行 2.执行打包命令 windeployqt ...

  4. Windows下Qt Creator设置IDE菜单字体样式

    Windows下Qt Creator设置IDE菜单字体样式 本文为解决以下问题: IDE的菜单字体太小 IDE的菜单字体样式,可以更换为微软雅黑 创建样式文件 在Qt Creator目录下C:\Qt\ ...

  5. 实现Windows下Qt扫描U盘的两种方式

    参考网上资源,总结了如下实现Windows下Qt扫描U盘的两种方式:. 方式1: 检测Windows的事件–WM_DEVICECHANGE 缺点:想要检测时,必须发生过一次U盘插拔动作,需要手动&qu ...

  6. 基于Qt Creator 的Windows下数字图像处理软件[栏目]

    基于Qt Creator 的Windows下数字图像处理软件[栏目] 前言 设计过程 完整项目展示 前言 之前说准备转行软件开发,准备从C++的学习开始,恰好这学期的数字图像处理需要做一个项目,所以决 ...

  7. 关于linux下网络服务器和windows下Qt客户端的通信(图片文件显示)

    关于最近比较火的物联网视频监控项目,在这里给大家分享下图片传输这一块,首先客户端显示是在Windows下Qt中,服务器是在linux系统ubuntu中,服务端打开本地两张图片循环发送给客户端Qt进行显 ...

  8. Windows下Qt打包:bat批处理脚本实现Qt自动打包

    Windows下Qt打包:新建文件夹,放入build下的可执行程序 xxx.exe,在cmd窗口中输入命令: windeployqt xxx.exe,自动抓取依赖库.点击运行exe,会提示还是缺少一些 ...

  9. windows下 QT 的 Android 环境搭建(附软件测试)

    windows下 QT for Android环境搭建 1. QT环境搭建 2. Android 环境搭建 2.1 JDK 2.2. NDK 2.3 SDK 3. 软件测试 3.1 QT自带 Scro ...

最新文章

  1. php 全局搜索方法,php启用sphinx全文搜索的方法
  2. 显示部分x_Linux 黑话解释:什么是显示服务器,用来做什么? | Linux 中国
  3. 大规模推荐Deep Retrieval
  4. vscode技巧、vscode教程、vscode使用技巧
  5. 微服务【1.1】Swagger的使用
  6. 初识组织社会学(part1)--勉为其难,不如顺其自然,在力所能及的层次上研究、解释问题
  7. 编译32位_玩转Android10源码开发定制(11)内核篇之安卓内核模块开发编译
  8. Apache-不重启完成添加或更改域名
  9. bfo java_Java操作PDF文件(BFO) | 学步园
  10. 【BZOJ】1756: Vijos1083 小白逛公园(线段树)
  11. 学习了下简单的光照模型
  12. axios_的基本使用_使用axios()方法来发送请求---axios工作笔记004
  13. python中的yield使用详解
  14. matlab上机操作作业指导书,LED自动固晶基本操作1
  15. c语言程序设计输出函数,输出函数C语言程序设计.pdf
  16. 【算法基础一】字符编码分类
  17. oracle数据库例题答案下载,Oracle数据库试题及答案[教学知识]
  18. python3 url 获取域名ip
  19. 语言学句法分析树形图怎么画_树形图(句法)
  20. 在微信小程序中使用less

热门文章

  1. 美女与修狗儿【 InsCode Stable Diffusion 美图活动一期】
  2. 操作系统概念 CPU调度(进程调度)
  3. 新手编程VS2019出现 error LNK2019 LNK1120 报错
  4. MySQL --- 函数大全 5
  5. MATLAB中定义数组序列,matlab怎么定义一个数组
  6. 今抖云创——快手直播带货选品建议
  7. idea设置主题和设置代码主题
  8. ABAP 数字转换中文大写数字的方法
  9. C++学习之 编程基础(中国科学院大学)
  10. Flask框架学习(持续更新)