第一步,写hello.java
第二步,执行javac hello.java
第三步,执行javah -jni hello(如果写成hello.class会报错),生成hello.h
第四步,创建一个C++的dll,比如叫hello
第五步,将hello.h,jni.h,jni_md.h拷贝到hello工程目录下,添加进工程里
第六步,修改hello工程中的hello.h中的#include <jni.h>成#include "jni.h"
第七步,在hello工程中添加hello.cpp,在hello.cpp添加#include "hello.h",把hello.h中的函数声明拷贝到hello.cpp
第八步,实现功能
第九步,编译hello生成hello.dll,将hello.dll拷贝到hello.java所在的目录下
第十步,执行java hello看效果
Java部分代码如下:
public class hello {
static {
System.loadLibrary("hello");
}
public native static void test(int s);
public static void main(String[] args) {
hello test = new hello();
test.test(200);
}
}
如果是包,比如package hellopackage:
建立hellopackage目录,将hello.java拷贝进去后执行javac hello.java,生成hello.class
注意:需要回到上级目录,再执行javah -jni hellopackage.hello即可生成hellopackage_hello.h
调试心得:发现错误UnsatisfiedLinkError,是头文件的函数声明与源文件的函数定义不一样导致的。
第二步,执行javac hello.java
第三步,执行javah -jni hello(如果写成hello.class会报错),生成hello.h
第四步,创建一个C++的dll,比如叫hello
第五步,将hello.h,jni.h,jni_md.h拷贝到hello工程目录下,添加进工程里
第六步,修改hello工程中的hello.h中的#include <jni.h>成#include "jni.h"
第七步,在hello工程中添加hello.cpp,在hello.cpp添加#include "hello.h",把hello.h中的函数声明拷贝到hello.cpp
第八步,实现功能
第九步,编译hello生成hello.dll,将hello.dll拷贝到hello.java所在的目录下
第十步,执行java hello看效果
Java部分代码如下:
public class hello {
static {
System.loadLibrary("hello");
}
public native static void test(int s);
public static void main(String[] args) {
hello test = new hello();
test.test(200);
}
}
如果是包,比如package hellopackage:
建立hellopackage目录,将hello.java拷贝进去后执行javac hello.java,生成hello.class
注意:需要回到上级目录,再执行javah -jni hellopackage.hello即可生成hellopackage_hello.h
调试心得:发现错误UnsatisfiedLinkError,是头文件的函数声明与源文件的函数定义不一样导致的。