native是什么?
用native修饰的方法称为本地方法,其由别的语言实现(C、C++)
示例
在桌面创建含native的Hello.java
public class Hello{
public static native void printHello();
}
cmd打开windows终端,切换到桌面目录,然后用javac编译生成Hello.class文件(若javac用不了则自行搜索配置环境变量)
javac Hello.java
用javah将Hello.class生成Hello.h头文件(无需后缀)
javah Hello
打开Hello.h
/* DO NOT EDIT THIS FILE - it is machine generated */
#include <jni.h>
/* Header for class Hello */
#ifndef _Included_Hello
#define _Included_Hello
#ifdef __cplusplus
extern "C" {
#endif
/*
* Class: Hello
* Method: printHello
* Signature: ()V
*/
JNIEXPORT void JNICALL Java_Hello_printHello
(JNIEnv *, jclass);
#ifdef __cplusplus
}
#endif
#endif
根据Hello.h中的声明创建Hello.c
#include"Hello.h"
#include<stdio.h>
JNIEXPORT void JNICALL Java_Hello_printHello(JNIEnv *, jclass){
printf("hello\n");
}
用cl命令将Hello.c生成Hello.dll
若cl用不了,则用Everything搜索vcvars64.bat(若无该项,则自行安装VS),将其拖进命令行窗口运行(双击无法生效)