JAVA????C????д??SO???
???????????? ???????[ 2014/11/14 10:22:29 ] ????????Java ?????? ????
??????????????д???SO??????????????IC??????APK????????????????м?????????????????JNI?????????????????????????
1 // ??JNI???
2 // ?????
3
4 // ????HelloWorld.java
5 class HelloWorld
6 {
7 private native void print();
8 public static void main(String[] args)
9 {
10 new HelloWorld().print();
11 }
12
13 static
14 {
15 System.loadLibrary("HelloWorld");
16 }
17 }
18 // ???print?????????????????native?????÷???????????????????????????static????ε?System.loadLibrary???????δ??????????????????????????libHelloWorld.so??
19 // ????HelloWorld.java
20 // ??????????????????????
21 javac HelloWorld.java
22 // ????????б???????HelloWorld.class??
23 // ????HelloWorld.h
24 // ??????????????????????
25 javah -jni HelloWorld
26 // ??????????л?????HelloWorld.h????HelloWorld.h?????????′???
27 /* DO NOT EDIT THIS FILE - it is machine generated */
28 #include <jni.h>
29 /* Header for class HelloWorld */
30
31 #ifndef _Included_HelloWorld
32 #define _Included_HelloWorld
33 #ifdef __cplusplus
34 extern "C" {
35 #endif
36 /*
37 * Class: HelloWorld
38 * Method: print
39 * Signature: ()V
40 */
41 JNIEXPORT void JNICALL Java_HelloWorld_print
42 (JNIEnv *?? jobject);
43
44 #ifdef __cplusplus
45 }
46 #endif
47 #endif
48 // ??????а????????????Java_HelloWorld_print??????????????????????????????????????潲????????????
49 // ???HelloWorld.c
50 // ????HelloWorld.c??????????μ????
51 #include <jni.h>
52 #include <stdio.h>
53 #include "HelloWorld.h"
54
55 JNIEXPORT void JNICALL
56 Java_HelloWorld_print(JNIEnv *env?? jobject obj)
57 {
58 printf("Hello World!
");
59 }
60 // ???????????jni.h????????????ж?????JNI???????????????????
61 // ??????????Java_HelloWorld_print??????????????????????????????????????????????????????????JNI?з???????
62 // env????java???????????Java?????????????c?к??????????????JVM?????????????C???????????????env???????????????
63 // obj???????????????c++??this????c???????????????????????????????????????????????ɡ?
64 // ????????libHelloWorld.so
65 // ??Linux?????????????????????????
66 cc -I/usr/lib/jvm/java-6-sun/include/linux/
67 -I/usr/lib/jvm/java-6-sun/include/
68 -fPIC -shared -o libHelloWorld.so HelloWorld.c
69 // ??????????libHelloWorld.so???????????????Java??include???????????????????趨???????Helloworld.c?а?????jni.h??
70 // ??????????????????HelloWorld.java??????LoadLibrary???????????“HelloWorld”?????????????Library???libHelloWorld??????Linux??????漲????????????????lib+????+.so???????????????????????????
71 // ????Java????HelloWorld
72 // ?????????????????????????????
73 java HelloWorld
74 // ?????????????????????????java.lang.UnsatisfiedLinkError??????????????·???????????·????
75 java -Djava.library.path='.' HelloWorld
76 // ??????????????????????·????ο?????Linux???????JNI????
77 // ????????????Υ??“Hello world!”??????
??????
???·???
??????????????????
2023/3/23 14:23:39???д?ò??????????
2023/3/22 16:17:39????????????????????Щ??
2022/6/14 16:14:27??????????????????????????
2021/10/18 15:37:44???????????????
2021/9/17 15:19:29???·???????·
2021/9/14 15:42:25?????????????
2021/5/28 17:25:47??????APP??????????
2021/5/8 17:01:11