一,Java部分,创建工程,建立一个类:
public class Huige {
static {
System.loadLibrary("HuiHui");
}
public native static int hui(int n);
public static void main(String[] args) {
int x;
Huige fhui = new Huige();
x = fhui.hui(5);
System.out.println(x);
}
1)分别生成Huige.class和 Huige.h文件
2)打开Huige.h 文件,查看内容如下
/* DO NOT EDIT THIS FILE - it is machine generated */
#include <jni.h>
/* Header for class Huige */
#ifndef _Included_Huige
#define _Included_Huige
#ifdef __cplusplus
extern "C" {
#endif
/*
* Class: Huige
* Method: hui
* Signature: (I)I
*/
JNIEXPORT jint JNICALL Java_Huige_hui
(JNIEnv *, jclass, jint);
#ifdef __cplusplus
}
#endif
#endif
二,创建c,c++动态连接库
1)在Vs2012中创建动态链接库
2)执行编译,这时可能会报错,提示jni.h找不到,需要将jni.h所在的文件加入到项目的包含目录中。可以在项目中点右键->属性
3)创建Huige.h文件,将前面生成的.h文件内容引进去
4)在Huige.cpp文件中写代码,c语言实现内容,如下面从0加到n
// HuiHui.cpp : 定义 DLL 应用程序的导出函数。
//
#include "stdafx.h"
#include "Huige.h"
JNIEXPORT jint JNICALL Java_Huige_hui
(JNIEnv *, jclass, jint n){
int x=0;
for(int i=0;i<n;i++){
x+=i;
}
return x;
}
5)重现生成后,找到Huige.dll文件,将其和Huige.class文件放入jak的bin下,运行。