没有合适的资源?快使用搜索试试~ 我知道了~
好的一种Java程序调用CC语言函数的方法.docx
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 101 浏览量
2021-09-30
23:36:39
上传
评论
收藏 12KB DOCX 举报
温馨提示
试读
2页
好的一种Java程序调用CC语言函数的方法.docx
资源推荐
资源详情
资源评论
[摘要]本文介绍如何利用 Java 提供的 C 语言接口在 Java 中调用 C 函数,解决了在实际调用
过程中可能碰到的技术问题,并通过实例给出了具体编程方法。
[关键词]Java JNT C DLL
在现今的软件开发领域中,Java 以其跨平台的优势得到大量的应用,其代码可以一次编
译多处执行。但这种特性给 Java 带来了一定的局限性,幸好 Java 提供了完备的 C/C++语
言接口,这样我们可以利用 C 语言的强大功能实现 Java 难以实现的功能,在一定程序上消除
Java 的局限性和低效率。
一、创建 DLL 文件
使用某一种 C/C++开发工具创建 Dll 文件,实现某一功能,供 JAVA 调用,例如本文在此
使用 Visual studio 2005 创建一个名为 testdll 的动态库文件。
二、使用 JNI
JNI 是 Java Native Interface 的缩写,中文为 JAVA 本地调用。它允许 Java 代码和其
他语言写的代码进行交互。
1.JAVA 类
在 JAVA 程序中,首先需要在类中声明所调用的库名称,如下:
static {
System.loadLibrary(“testdll”); //加载动态库,testdll 为 DLL 文件名称
}
还需要对将要调用的方法做本地声明,关键字为 native。并且只需要声明,而不需要具
体实现。如下:
public native static void set(int i);
public native static int get();
然后编译该 JAVA 程序文件,生成 CLASS,再用 JAVAH 命令,JNI 就会生成 C/C++的头文
件。
例如程序 testdll.java,内容为:
public class testdll { static { System.loadLibrary(“testdll”); } public native
static int get(); public native static void set(int i); public static void
main(String[] args) { testdll test = new testdll(); test.set(10);
System.out.println(test.get()); } }
用 javac testdll.java 编译它,会生成 testdll.class。
再用 javah testdll,则会在当前目录下生成 testdll.h 文件,这个文件需要被 C/C++程
序调用来生成所需的库文件。
2.C/C++
创建 C/C++项目需要增加的头文件有 jni.h、jni_md.h 这两个文件是 JNI 中必须的;还
有就是增加 testdll.h。
对于已生成的.h 头文件,C/C++所需要做的,就是把它的各个方法具体的实现。然后编
译连接成库文件即可。再把库文件拷贝到 JAVA 程序的路径下面,就可以用 JAVA 调用 C/C+
+所实现的功能了。
接上例子。我们先看一下 testdll.h 文件的内容:
#include #ifndef _Included_testdll #de8ne _Included_testdll #ifdef
__cplusplus extern "C" { #endif JNIEXPORT jint JNICALL Java_testdll_get (JNIEnv
*, jclass); JNIEXPORT void JNICALL Java_testdll_set (JNIEnv *, jclass, jint); #ifdef
__cplusplus } #endif #endif
1 / 2
资源评论
zpl19880112
- 粉丝: 7
- 资源: 3万+
下载权益
C知道特权
VIP文章
课程特权
开通VIP
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功