JNI (Java Native Interface)是什么(2)

4) 编写本地方法(c/c++程序)
实现和由Javah命令生成的头文件里面声明的方法名相同的方法。
代码2:

JNI (Java Native Interface)是什么

1 #include "jni.h"

JNI (Java Native Interface)是什么

2 #include "HelloWorld.h"

JNI (Java Native Interface)是什么

3 #include ......

JNI (Java Native Interface)是什么


JNI (Java Native Interface)是什么

4 JNIEXPORT void JNICALL Java_HelloWorld_displayHelloWorld(JNIEnv *env, jobject obj) 

JNI (Java Native Interface)是什么

    
...{

JNI (Java Native Interface)是什么

        printf(
"Hello world! ");

JNI (Java Native Interface)是什么

        
return;
    }

JNI (Java Native Interface)是什么


JNI (Java Native Interface)是什么

注意第1行,需要将jni.h(该文件可以在%JAVA_HOME%/include文件夹下面找到)文件引入,因为在程序中的JNIEnv、jobject等类型都是在该头文件中定义的;

另外在第2行需要将HelloWorld.h头文件引入(我是这么理解的:相当于我们在编写java程序的时候,实现一个接口的话需要声明才可以,这里就是将HelloWorld.h头文件里面声明的方法加以实现。当然不一定是这样)。然后保存为HelloWorldImpl.c就ok了。


5) 生成动态库
这里以在Windows中为例,需要生成dll文件。在保存HelloWorldImpl.c文件夹下面,使用VC的编译器cl生成。
命令行如下:cl -I%java_home%/include -I%java_home%/include/win32 -LD HelloWorldImp.c -Fehello.dll

注意:生成的dll文件名在选项-Fe后面配置,这里是hello,因为在HelloWorld.java文件中我们loadLibary的时候使用的名字是hello。当然这里修改之后那里也需要修改。另外需要将-I%java_home%/include -I%java_home%/include/win32参数加上,因为在第四步里面编写本地方法的时候引入了jni.h文件。


6) 运行程序
java HelloWorld就ok。

JNI (Java Native Interface)是什么

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wwdsss.html