浅谈利用Android NDK编译C/C++文件的经历
来源:互联网 发布:网络直销 编辑:程序博客网 时间:2024/05/29 11:09
因为工作的需要,有幸经历了一次在linux下的eclipse中利用android的NDK编译C/C++代码成.so文件,然后在java层利用JNI的方式调用C/C++方法的过程。作为一个新手,在没有任何人帮助的,只能通过google查找资料的情况下,要走通这个过程还是很痛苦的。特别是C/C++代码中还存在不少语法错误。
首先要配好环境,Eclipse+CDT+gcc/g++,有的eclipse已经帮你把CDT装好了,你可以通过Help->About eclipse中的选项进行查看。
环境配好,你就可以新建一个Android Application Project了,建好后直接在工程名文件下新建一个jni的文件夹,例如我的工程名为sigcomp,jni的位置就是sigcomp->jni。然后在jni文件夹下创建Android.mk文件,位置一定要在jni->Android.mk下,否则build的时候会报错。然后你可以把C/C++代码直接放在jni文件夹下,也可以在jni下创建一个src的文件夹,将C/C++代码放在src中。当这些准备好后,你就可以开始通过NDK的方式将C/C++代码build成.so文件了,具体的方法可以参考下面这篇文章中的步骤。
http://blog.csdn.net/yangchang999/article/details/8082764
在build的过程NDK 会检查C/C++代码的语法错误,因此你最好是在之前先用一个C/C++ project 编译这些C/C++代码,确保语法正确。然而这也不能保证NDK build的过程中不会报语法错误,因为NDK中的编译器和我们在C/C++ project中的编译器不一样,NDK对C的支持度比较好,对C++的支持度稍微欠缺点。但在这样可以保证在NDK build的过程中不会出现过多的语法错误。
需要注意的是如果你的C++代码中出现了很多C++特有的库,例如<iostream>,<list>等,那么你还需要在jni的文件夹下添加一个Application.mk文件,文件内容为:
APP_STL := stlport_static
APP_STL := gnustl_static
另外还需要注意的是NDK只对.c和.cpp的后缀的文件识别,当然还有.h文件了,其他的就不大认识,例如.cxx后缀的文件,虽然有些编译器可以把.cxx当作.cpp编译,但是NDK中的编译器却不行。之前就是因为这个问题,耗费了我一个周末的时间。特别注意了。
- 浅谈利用Android NDK编译C/C++文件的经历
- Android 非NDK方式编译C文件
- Android使用NDK编译C/C++文件
- android ndk c编译
- 在window下,简单利用NDK编译c/c++文件,在android项目中调用。
- 用ndk编译C文件
- NDK编译C/C++文件
- Android ndk探索之一(利用Android Studio和ndk编译c)
- Android studio NDK编译C代码so文件
- 浅谈C文件编译过程
- android studio ndk-build 编译C生成.so文件(ndk基础篇)
- NDK编译cpp和c文件
- Android NDK编译带STL的 C/C++ 程序
- Android NDK编译带STL的 C/C++ 程序
- ndk编译android上运行的c程序
- Android 源码/NDK下编译C/C++的可执行文件
- NDK编译Android上运行的C可执行程序
- Android NDK编译带STL的 C/C++ 程序
- 学龄前幼儿无奈成“面霸”
- Js 基于localStorage 制作的 "我的便签本"
- oracle-tnsping命令
- 解决PhoneGap(Cordova)在iOS中启动画面闪动的问题 - 技术博客
- 在Ubuntu上下载、编译和安装Android最新源代码
- 浅谈利用Android NDK编译C/C++文件的经历
- SAP ABAP如何将内表的数据导出到EXCEL
- 资源的多位置上传与管理
- notepad++ 杂记
- 故事再美,还是会有结局:物是人非的空间日志
- 数据库的导入导出命令
- 在Ubuntu上下载、编译和安装Android最新内核源代码(Linux Kernel)
- embed标签的使用(在网页中播放各种音频视频的插件的使用)
- 从Klocwork中.net检测项说说代码书写