Android中JNI的调用生成头文件流程
发布时间:2021-11-20 16:53:05 所属栏目:教程 来源:互联网
导读:Android 中通过JNI调用本地方法步骤介绍:首先是在eclipse中生成类文件 package Pag; public class JNI { static{ System.loadLibrary(hello); } public native void printHello(); public static void main(String[] args) { new JNI().printHello(); } } 上
Android 中通过JNI调用本地方法步骤介绍:首先是在eclipse中生成类文件 package Pag; public class JNI { static{ System.loadLibrary("hello"); } public native void printHello(); public static void main(String[] args) { new JNI().printHello(); } } 上面的例子是java简单的调用native方法。可以通过javac生成.class文件 比如上面的在D:jni文件夹中,第一中方式是在dos命令cmd中cd d: cd jni cd Pag javac JNI.java 如:C:UsersAdministrator>cd d: D:jniPag C:UsersAdministrator>d: D:jniPag>javac JNI.java 这样将在当前目录中生成class文件。或者在eclipse直接bin目录中就会有生成好的.class文件 第二种是直接在dos命令cmd中javac d:jniPagJNI.java 如:C:UsersAdministrator>javac d:jniPagJNI.java 下面是生成头文件的两种方法: 第一种方法是进入相应生成的生成.class包目录(注意是包含.class的包目录,并不是.class目录)。 例如: C:UsersAdministrator>d: D:>cd workspaceJNITextbinPag D:workspaceJNITextbinPag>javah JNI 错误:无法访问 JNI 错误的类文件: .JNI.class 类文件包含错误的类: Pag.JNI 请删除该文件或确保该文件位于正确的类路径子目录中。 com.sun.tools.javac.util.Abort at com.sun.tools.javac.comp.Check.completionError(Check.java:164) at com.sun.tools.javadoc.DocEnv.loadClass(DocEnv.java:149) at com.sun.tools.javadoc.RootDocImpl.<init>(RootDocImpl.java:77) at com.sun.tools.javadoc.JavadocTool.getRootDocImpl(JavadocTool.java:159 ) at com.sun.tools.javadoc.Start.parseAndExecute(Start.java:330) at com.sun.tools.javadoc.Start.begin(Start.java:128) at com.sun.tools.javadoc.Main.execute(Main.java:66) at com.sun.tools.javah.Main.main(Main.java:147) javadoc: 错误 - 致命错误 2 错误 上边的提示是进入了.class 目录中,并不是包目录。接下来返回到上一个目录中,也就是说的包目录(D:workspaceJNITextbin),通过javah Pag.JNI编译.h头文件,将会在bin中生成 D:workspaceJNITextbinPag> D:workspaceJNITextbinPag>cd .. D:workspaceJNITextbin>javah Pag.JNI bin中有类包Pag,也就是说包路径。通过javah命令实现 第二种方法的命令是C:UsersAdministrator>javah -classpath D:workspaceJNITextbin -jni Pag.JNI (直接进入cmd)中javah -classpath <包路径> -jni <包含.class的包路径>。 经过实验测试C:UsersAdministrator>javah -classpath D:workspaceJNITextbin -jni Pag.JNI中,-jni可以省略不写,但是-classpath 不能省略,否则报 javadoc: 错误 - 非法的软件包名称:"D:workspaceJNITextbin"的错误。 生成的文件如下: /* DO NOT EDIT THIS FILE - it is machine generated */ #include <jni.h> /* Header for class Pag_JNI */ #ifndef _Included_Pag_JNI #define _Included_Pag_JNI #ifdef __cplusplus extern "C" { #endif /* * Class: Pag_JNI * Method: printHello * Signature: ()V */ JNIEXPORT void JNICALL Java_Pag_JNI_printHello (JNIEnv *, jobject); #ifdef __cplusplus } #endif #endif 随后通过CC++编程工具实现其头文件的方法,生成dll。 (编辑:济南站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |