Java通过JNI调用C语言的方法(2)

  这里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运行它,就可以观察到结果了。

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

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