JAVA如何调用C/C 方法

2008-02-23 05:34:04来源:互联网 阅读 ()

新老客户大回馈,云服务器低至5折

(JNIEnv *, jclass);

/*

* Class: testdll

* Method: set

* Signature: (I)V

*/

JNIEXPORT void JNICALL Java_testdll_set

(JNIEnv *, jclass, jint);

#ifdef __cplusplus

}

#endif

#endif

在具体实现的时候,我们只关心两个函数原型

JNIEXPORT jint JNICALL Java_testdll_get (JNIEnv *, jclass);

JNIEXPORT void JNICALL Java_testdll_set (JNIEnv *, jclass, jint);

这里JNIEXPORT和JNICALL都是JNI的关键字,表示此函数是要被JNI调用的。而jint是以JNI为中介使JAVA的int类型和本地的int沟通的一种类型,我们能够视而不见,就当做int使用。函数的名称是JAVA_再加上java程式的package路径再加函数名组成的。参数中,我们也只需要关心在JAVA程式中存在的参数,至于JNIEnv*和jclass我们一般没有必要去碰他。

好,下面我们用testdll.cpp文档具体实现这两个函数:

#include "testdll.h"

int i = 0;

JNIEXPORT jint JNICALL Java_testdll_get (JNIEnv *, jclass)

{

return i;

}

JNIEXPORT void JNICALL Java_testdll_set (JNIEnv *, jclass, jint j)

{

i = j;

}

编译连接成库文档,本例是在WINDOWS下做的,生成的是DLL文档。并且名称要和JAVA中需要调用的一致,这里就是goodluck.dll

把goodluck.dll拷贝到testdll.class的目录下,java testdll运行他,就能够观察到结果了。




标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇: QuickReport基本知识

下一篇: 在C 语言中,关于内联函数(inline)的入门教程!

热门词条
热门标签