使用javah快速生成本地方法及生成so动态库文件

来源:互联网 发布:用淘宝联盟被发现了 编辑:程序博客网 时间:2024/06/06 02:23
使用javah快速生成本地方法及生成so动态库文件


1、生成包含本地方法的.h文件

如果使用jdk1.6可以直接到bin/classess,在cmd窗口使用如:javah com.lqr.test.MainActivity 命令,即可在bin/classess目录下生成包含本地方法的.h文件。

如果使用jdk1.7及以上版本,则要到src目录下操作以上命令,会在src目录下生成包含本地方法的.h文件,原因是1.7后会检查类的关联。

2、得到本地方法:
打开生成好的.h文件,把相应的本地方法复制到自己的xxx.c文件中,注意要实现该方法,否则会报方法找不到这种错误。
报错代码如下:

Caused by: java.lang.UnsatisfiedLinkError: Native method not found: com.lqr.test.MainActivity.result_from_c:(II)I

3、到jni目录下,使用ndk-build命令即可在lib目录下生成对应处理器平台的so动态库文件。

说明:在jni中,下划线"_"表示层级结构,所以如果本地方法名尽量避免使用下划线。
如果一定要用到下划线,解决方法有:
(1)用javah直接生成对应本地方法,jdk会自动帮我们生成正确无误的方法名。
(2)简单粗暴的在方法名的每个下划线后面写上一个数字1即可,如 result_from_c 对应是 result_1from_1c
0 0
原创粉丝点击