当前位置: 代码迷 >> Android >> 2011.11.22——— android jni简略用法
  详细解决方案

2011.11.22——— android jni简略用法

热度:58   发布时间:2016-05-01 19:24:47.0
2011.11.22——— android jni简单用法
2011.11.22——— android jni简单用法
参考:http://www.eoeandroid.com/thread-114412-1-1.html
http://www.androidzz.com/2011/08/android-jni/
http://my.unix-center.net/~Simon_fu/?p=833
http://topic.csdn.net/u/20110711/09/7b2bb12b-be4b-4eed-b995-7c0b6d2ea068.html

首先 先说一下 我遇到的问题

1、System.loadLibrary的参数
沿袭Linux传统,lib<something>.so是类库文件名称的格式,但在Java的System.loadLibrary(“ something ”)方法中指定库名称时,不能包括 前缀—— lib,以及后缀——.so

比如说 你的so文件名字为libhello.so

这时  你应该写
System.loadLibrary(hello);


2、javah命令问题
刚开始 我是这样的
C:\Program Files\Java\jdk1.6.0_20\bin>javah E:\workspace\TestJNI\src\com\lp\jni\FirstJNI

我是指向了java文件 就报错 如下
javadoc: 错误 - 非法的软件包名称:"E:\workspace\TestJNI\src\com\lp\jni\FirstJNI"


然后  我指向class文件

C:\Program Files\Java\jdk1.6.0_20\bin>javah E:\workspace\TestJNI\bin\classes\com\lp\jni\FirstJNI

错误依然
javadoc: 错误 - 非法的软件包名称:"E:\workspace\TestJNI\bin\classes\com\lp\jni\FirstJNI"


后来 查了 说不能直接指向文件 而应该知道bin根目录 带包命运行
C:\Program Files\Java\jdk1.6.0_20\bin>javah E:\workspace\TestJNI\bin\classes\ com.lp.jni.FirstJNI

错误仍然存在
javadoc: 错误 - 非法的软件包名称:"E:\workspace\TestJNI\bin\classes\"


咳,然后 需要加上-classpath参数 才可以
如下
C:\Program Files\Java\jdk1.6.0_20\bin>javah -classpath E:\workspace\TestJNI\bin\classes\ com.lp.jni.FirstJNI


这下 终于大功告成了 呵呵



  相关解决方案