如题,如下
1,创建java项目,创建class HelloWorld
<pre name="code" class="java">package com.min;
public class HelloWorld {
public native void displayHelloWorld();
public native int max(int a, int b);
static {
System.loadLibrary("JNIHelloWorld");
}
public void mydisplay(){
System.out.println("mydisplaylllllll");
}
public static void main(String[] args) {
HelloWorld myh = new HelloWorld();
myh.mydisplay();
try {
myh.displayHelloWorld();
int maxnumber = myh.max(3,5);
System.out.println(maxnumber);
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}
//.displayHelloWorld();
return;
}
}
2,生成.h文件,cmd到目录bin下,javah -jni com.min.HelloWorld 生成com_min_HelloWorld.h
3,vs创建c++ dll项目
<pre name="code" class="cpp">#include <stdio.h>
#include "jni.h"
#include "D:\work\javaWorkSpace\JNIHelloWorld\bin\com_min_HelloWorld.h"
// #ifdef JNIHELLOWORLD_EXPORTS
// #define JNIEXPORT __declspec(dllexport)
// #else
// #define JNIEXPORT __declspec(dllimport)
// #endif
// extern "C" __declspec(dllexport) void myprint()
// {
// printf("myPrint");
// return;
// }
void JNICALL Java_com_min_HelloWorld_displayHelloWorld
(JNIEnv *, jobject)
{
printf("my JNI hellowrold!");
return;
}
JNIEXPORT jint JNICALL Java_com_min_HelloWorld_max
(JNIEnv *, jobject, jint a, jint b)
{
return a>b?a:b;
}
注意,要include相应的jni文件 C:\Program Files\Java\jdk1.8.0_25\include\win32 C:\Program Files\Java\jdk1.8.0_25\include
还要注意,如果jdk是64位的(java -version可以看到),那么vs项目要使用x64编译
然后生成JNIHelloWorld.dll文件
4,拷贝dll到java项目中,可以新建一个目录mydllLib,放进去,然后eclipse中选中 项目属性-java build path-library-JRE system library- Native library, 然后 Edit,将mydllLib目录填进去
5,可以了,运行
mydisplaylllllll
5
my JNI hellowrold!
注: 这里补充说明一点,如果要调用第三方库(third.dll),那么third.dll 要放在项目.project 同一目录下