这里JNIEXPORT和JNICALL都是JNI的关键字,表示此函数是要被JNI调用的。而jint是以JNI为中介使Java的int类型与本地的int沟通的一种类型,我们可以视而不见,就当做int使用。函数的名称是Java_再加上Java程序的package路径再加函数名组成的。参数中,我们也只需要关心在Java程序中存在的参数,至于JNIEnv*和jclass我们一般没有必要去碰它。
好,下面我们用testdll.cpp文件具体实现这两个函数:
Java代码
142.#include "testdll.h"
143.int i = 0;
144.JNIEXPORT jint JNICALL Java_testdll_get (JNIEnv *, jclass)
145.{
146.return i;
147.}
148.JNIEXPORT void JNICALL Java_testdll_set (JNIEnv *, jclass, jint j)
149.{
150.i = j;
151.}
152.#include "testdll.h"
153.int i = 0;
154.JNIEXPORT jint JNICALL Java_testdll_get (JNIEnv *, jclass)
155.{
156.return i;
157.}
158.JNIEXPORT void JNICALL Java_testdll_set (JNIEnv *, jclass, jint j)
159.{
160.i = j;
161.}
编译连接成库文件,本例是在WINDOWS下做的,生成的是DLL文件。并且名称要与Java中需要调用的一致,这里就是goodluck.dll
把goodluck.dll拷贝到testdll.class的目录下,Java testdll运行它,就可以观察到结果了。