Java代码:
public class JNIHelloWorld {
public native void helloWorld();
static {
System.loadLibrary("hellojni");
}
public static void main(String[] args) {
JNIHelloWorld hello = new JNIHelloWorld();
hello.helloWorld();
}
}
C函数原型头文件:( javah生成)
/* DO NOT EDIT THIS FILE - it is machine generated */
#include <jni.h>
/* Header for class JNIHelloWorld */
#ifndef _Included_JNIHelloWorld
#define _Included_JNIHelloWorld
#ifdef __cplusplus
extern "C" {
#endif
/*
* Class: JNIHelloWorld
* Method: helloWorld
* Signature: ()V
*/
JNIEXPORT void JNICALL Java_JNIHelloWorld_helloWorld
(JNIEnv *, jobject);
#ifdef __cplusplus
}
#endif
#endif
C实现文件:
#include <jni.h>
#include <stdio.h>
#include "JNIHelloWorld.h"
JNIEXPORT void JNICALL Java_JNIHelloWorld_helloWorld
(JNIEnv * env, jobject javaObject) {
printf("Hello World!\n");
return;
}
生成dll(利用Visual Studio 的 cl命令)
cl -I"<JDK_HOME>\include" -I"<JDK_HOME>\include\win32" -DL XXX.c -FEXXX.dll
运行Java的main方法:
Hello World!