1、 编写java程序:这里以CTestHello 为例。
代码1:
class CTestHello{
public native void displayHelloWorld();//所有native关键词修饰的都是对本地的声明
static
{
//载入本地库 ,此处为动态加载 ,库的文件名可能为"libhello.dll"或者"libhello.so"
//如果" hello" 库还依赖于其他动态库,同样需要在此处声明,最好是按库生成依赖的先后顺序来加载,
}
public static void main(String[] args)
{
new CTestHello().displayHelloWorld();
}
}
2、编译CTestHello ,使用命令 javac CTestHello.java,生成 CTestHello.class文件。
3、使用命令javah CTestHello,为CTestHello.java生成 CTestHello.h的jni头文件。
4、以CTestHello.h为头文件建立hello.dll的C++ dll工程,
【注意】需要将该工程添加 jdk 的 jin目录下的 win32
和include 包含路径,并且在hello.cpp头部添加 #include <jni.h> 和 #include "CTestHello.h"
在hello.cpp中实现 CTestHello.h 提供的函数声明。
5、编译hello.dll的C++ dll工程,将生成的 hello.dll拷贝到与CTestHello.class文件同级的目录。
6、使用命令java CTestHello,即可调用hello.dll的代码。
代码1:
class CTestHello{
public native void displayHelloWorld();//所有native关键词修饰的都是对本地的声明
static
{
//载入本地库 ,此处为动态加载 ,库的文件名可能为"libhello.dll"或者"libhello.so"
//如果" hello" 库还依赖于其他动态库,同样需要在此处声明,最好是按库生成依赖的先后顺序来加载,
//如果依赖的库不声明,jni调用将加载失败。
}
public static void main(String[] args)
{
new CTestHello().displayHelloWorld();
}
}
2、编译CTestHello ,使用命令 javac CTestHello.java,生成 CTestHello.class文件。
3、使用命令javah CTestHello,为CTestHello.java生成 CTestHello.h的jni头文件。
4、以CTestHello.h为头文件建立hello.dll的C++ dll工程,
【注意】需要将该工程添加 jdk 的 jin目录下的 win32
和include 包含路径,并且在hello.cpp头部添加 #include <jni.h> 和 #include "CTestHello.h"
在hello.cpp中实现 CTestHello.h 提供的函数声明。
5、编译hello.dll的C++ dll工程,将生成的 hello.dll拷贝到与CTestHello.class文件同级的目录。
6、使用命令java CTestHello,即可调用hello.dll的代码。