1. linux 下使用 javah生成头文件
root@ubuntu:/works/sdk/android-ndk-r7/samples/hello-jni# tree
-
├── AndroidManifest.xml
-
├── assets
-
├── bin
-
│ ├── AccelerometerPlayActivity.apk
-
│ ├── classes
-
│ │ ├── com
-
│ │ │ └── example
-
│ │ │ └── hellojni
-
│ │ │ ├── HelloJni.class
-
│ │ │ ├── R$attr.class
-
│ │ │ ├── R.class
-
│ │ │ └── R$string.class
-
│ │ └── com_example_hellojni_HelloJni.h
-
│ ├── classes.dex
-
│ ├── res
-
│ └── resources.ap_
-
├── jni
-
├── obj
-
├── project.properties
-
├── src
-
│ └── com
-
│ └── example
-
│ └── hellojni
-
│ └── HelloJni.java
-
└── tests
当用 java 调用c代码时, c代码的函数名要符合一定的规则: 包名_类名_函数名
用javah 可以生成这样的头文件,以 android-ndk-r7/samples/hello-jni/ 为例,记录一下javah的使用方法,防止下次出现这个问题的时候还要google
出现了多次这个问题:
error: cannot access com.example.hellojni.HelloJni
class file for com.example.hellojni.HelloJn not found
javadoc: error - Class com.example.hellojni.HelloJn not found.
Error: No classes were specified on the command line. Try -help.
1. 首先hello-jni/src/com/example/hellojni/HelloJni.java 先用eclipse编译一下,生成HelloJni.class,eclipse编译完成之后,可在 hello-jni/bin/classes/com/example/hellojni/HelloJni.class 找到 HelloJni.class
2. 进入 hello-jin/bin 目录,使用
javah -classpath . -jni com.example.hellojni.HelloJni
其中:
-classpath 指定javah用来查找类的路径
-jni 使 javah 创建一输出文件
com.example.hellojni.HelloJni 这个应该是把路径中的/改为.了吧, java不熟
参考文章:http://www.cnblogs.com/charley_yang/archive/2011/03/13/1983038.html
阅读(3603) | 评论(0) | 转发(0) |