22 Qt for android里调用so动态库
来源:互联网 发布:手机看电影软件排行 编辑:程序博客网 时间:2024/06/09 07:04
因大部分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/ -lmyaddINCLUDEPATH += $$PWD/../../disk3/qt_android_soDEPENDPATH += $$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
阅读全文
0 0
- 22 Qt for android里调用so动态库
- Android Studio调用QT for Android生成的.so库
- 在android里调用第三方动态链接库.so
- Qt .so动态链接库调用,配置
- android 中调用 so 动态链接库
- Android app调用动态库so
- android java 调用 .so 动态库实例
- unity-调用动态库so-android篇
- Qt Creator调用C语言编译的.So动态库
- 外部.so库放入 Qt for Android 项目
- qt调用so共享库
- Qt on Android调用so库的问题
- Qt on Android调用so库的问题------
- Unity3d调用android里的.so
- JNI调用动态库.so
- 动态库(.so)函数调用
- 动态库.so调用实例
- linux调用.so动态库
- liunx 安装redis 远程连接 设置密码
- 初始化地区代码
- mysql基本简介
- iOS开发之属性修饰符
- tornado web异步框架 和 nodejs 的异步对比
- 22 Qt for android里调用so动态库
- VMware与锐捷冲突上不了网
- 【Golang】关于信号signal处理
- 常成员const
- 微信公众号开发-输入城市查询天气
- java---发送邮件功能
- (115)注释
- python在windows下使用pip安装wordcloud模块失败
- Mongo的morphia读取Map<String, List<Object>>类型数据的问题