好的一种Java程序调用C-C++语言函数的方法_第1页
好的一种Java程序调用C-C++语言函数的方法_第2页
好的一种Java程序调用C-C++语言函数的方法_第3页
好的一种Java程序调用C-C++语言函数的方法_第4页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、 好的一种Java程序调用C/C+语言函数的方法摘要本文介绍如何利用java提供的c语言接口在java中调用c函数,解决了在实际调用过程中可能碰到的技术问题,并通过实例给出了具体编程方法。 关键词java jnt c dll 在现今的软件开发领域中,java以其跨平台的优势得到大量的应用,其代码可以一次编译多处执行。但这种特性给java带来了一定的局限性,幸好java提供了完备的c/c+语言接口,这样我们可以利用c语言的强大功能实现java难以实现的功能,在一定程序上消除java的局限性和低效率。 一、创建dll文件 使用某一种c/c+开发工具创建dll文件,实现某一功能,供java调用,例如

2、本文在此使用visual studio 2005创建一个名为testdll的动态库文件。 二、使用jni jni是java native interface的缩写,中文为java本地调用。它允许java代码和其他语言写的代码进行交互。 类 在java程序中,首先需要在类中声明所调用的库名称,如下: static (“testdll”); /加载动态库,testdll为dll文件名称 还需要对将要调用的方法做本地声明,关键字为native。并且只需要声明,而不需要具体实现。如下: public native static void set(int i); public native static

3、 int get(); 然后编译该java程序文件,生成class,再用javah命令,jni就会生成c/c+的头文件。LocALhOSt 例如程序,内容为: public class testdll static (“testdll”); public native static int get(); public native static void set(int i); public static void main(string args) testdll test = new testdll(); (10); (); 用javac 编译它,会生成。 再用javah testdll,

4、则会在当前目录下生成文件,这个文件需要被c/c+程序调用来生成所需的库文件。 /c+ 创建c/c+项目需要增加的头文件有、jni_这两个文件是jni中必须的;还有就是增加。 对于已生成的.h头文件,c/c+所需要做的,就是把它的各个方法具体的实现。然后编译连接成库文件即可。再把库文件拷贝到java程序的路径下面,就可以用java调用c/c+所实现的功能了。 接上例子。我们先看一下文件的内容: #include #ifndef _included_testdll #define _included_testdll #ifdef _cplusplus extern “c” #endif jniex

5、port jint jnicall java_testdll_get (jnienv *, jclass); 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);

6、这里jniexport和jnicall都是jni的关键字,表示此函数是要被jni调用的。而jint是以jni为中介使java的int类型与本地的int沟通的一种类型,我们可以视而不见,就当做int使用。函数的名称是java_再加上java程序的package路径再加函数名组成的。参数中,我们也只需要关心在java程序中存在的参数,至于jnienv*和jclass我们一般没有必要去碰它。 下面我们用文件具体实现这两个函数:#include “ 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+5; 编译连接成库文件,这里就是。把拷贝到的目录下,java testdll运行它,就可以观察到结果了。 三、总结 使用jni可以在java中调用其它语言编写的代码,在一定程度上消除java的局限性和低效率。

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论