这篇文章对入门NDK非常有帮助,今天晚上刚刚把代码在我的 环境下跑起来。
我的环境是Fedora14,我的Eclipse for java也安装了CDT支持C、C++开发。
之前说过要把项目上传的,地址:http://download.csdn.net/source/3464733
为什么要写这个总结呢?
我感觉还是有些必要的。NDK开发涉及到Java和C/C++的交互,在开发过程中难免遇到错误和这样那样的问题。我现在linux下做NDK开发要比Windows下简单了下,少了一个环节。
对于刚入门的同学,找java的jni相关的文章就不是很多,我之前写过一篇:http://blog.csdn.net/lincyang/article/details/6528360
原来sun写的Java关于jni的文章:http://java.sun.com/docs/books/jni/html/jniTOC.html,但是第一个例子就不太好写,可以和我上面的文章比较着看,把第一个例子跑起来就好了。
在文章例子中有一个致命的错误,造成了编译失败。
那就是java文件中函数定义的参数类型是int,而java生成的头文件中相对应的函数中参数类型就变成long了。
这个错误我已经在书的官网上comment了,没有直接联系到作者也很遗憾。
public static native long fibN(int n); //
// Native implementation - iterative
public static native long fibNI(int n); //
but the head file is: ... JNIEXPORT jlong JNICALL Java_com_marakana_FibLib_fibN (JNIEnv , jclass, jlong); ... JNIEXPORT jlong JNICALL Java_com_marakana_FibLib_fibNI (JNIEnv , jclass, jlong); ...
there are something wrong. modify : public static native long fibN(long n); //
// Native implementation - iterative public static native long fibNI(long n); //
希望本文能对大家有帮助,做技术的,多沟通很重要!