Java Native Interface例程
来源:互联网 发布:飞机票抢票软件 编辑:程序博客网 时间:2024/05/16 06:15
windows下,使用BlueJ和Pelles C编写的例程。
1.创建Java项目。
方便起见,在现有项目codes的API中创建一个包jni,创建一个类:
package API.jni;public class JniDemo{//API.jni.JniDemo static { System.load("等一下再填"); } public native int nativeAdd(int x, int y); public static void test() { System.out.println(new JniDemo().nativeAdd(100, 3)); }}
2.javah
cmd窗口,使用下面的命令(javah -jni 类全名),在项目的根目录下,生成一个C语言头文件
...codes>javah -jni API.jni.JniDemo
修改生成的API_jni_JniDemo.h,将#include <jni.h>改为#include "jni.h"(不知道为什么要生成尖括号)
3.创建Win64 DLL项目,随意取名C64,位置就近放在jni文件夹下。
将API_jni_JniDemo.h和它需要的jni.h(通常为D:\Program Files (x86)\Java\include)以及后者需要的jni_md.h(D:\Program Files (x86)\Java\include\win32),复制粘贴到C64文件夹下。
#include "API_jni_JniDemo.h"JNIEXPORT jint JNICALL Java_API_jni_JniDemo_nativeAdd (JNIEnv * env, jobject obj, jint x, jint y){ return x+y;}保存为某名.c文件。编译得到c64.dll。用c64.dll文件的绝对路径如“D:\编程导论\codes_补充\API\jni\c64\c64.dll”,将\搞成\\,替换JniDemo代码中的“等一下再填”。
System.load("D:\\编程导论\\codes\\API\\jni\\c64\\c64.dll");
运行test:4.
在BlueJ中重启JVM,修改参数nativeAdd(10, 3),运行结果:13.
常见问题:
- 【Q】没有用过BlueJ,咋办?【A】那就用记事本好了,目录搞清楚。
- 【Q】javah?【A】path
- 【Q】VC++ 6.0?【A】用VS也好过VC。
- 【Q】Cygwin?【A】能够用一下Cygwin,是最好的。大多数同学用windows,不好。
参考资料:
- http://docs.oracle.com/javase/6/docs/technotes/guides/jni/spec/jniTOC.html
- 使用 Java Native Interface 的最佳实践
1 0
- Java Native Interface例程
- java例程练习(接口interface)
- Java Native Interface
- JNI:Java Native Interface
- JNI(java native interface)
- JNI - Java Native Interface
- Java Native Interface
- Java Native Interface
- JNI:Java Native Interface
- Java Native Interface
- Java Native Interface
- Java Native Interface (JNI)
- Java Native Interface Specification
- Java Native Interface (JNI)
- JNI:Java Native Interface
- Java Native Interface笔记
- JNI:Java Native Interface
- Java Native Interface
- Android 制作简易浏览器源码
- NYOJ-18-The Triangle
- pyqt 代码生成错误
- JAVA网络-URL
- JAVA网络-InetAddress类
- Java Native Interface例程
- Linux驱动开发——EXPORT_SYMBOL的使用
- shell 之 test 和 [] 以及 if
- JAVA网络-socket
- Dojo Query 详解
- 数据搜集经验-- A Topic Model for Hierarchical Documents
- 的方式的发生的第三方的的方式
- 易經大意 021_040
- socket文件