没有合适的资源?快使用搜索试试~ 我知道了~
java调用c动态库.pdf
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 145 浏览量
2021-10-04
18:45:27
上传
评论
收藏 9KB PDF 举报
温馨提示
试读
3页
java调用c动态库.pdf
资源推荐
资源详情
资源评论
JNI 是 Java Native Interface 的缩写,中文为 JAVA本地调用。从 Java 1.1 开始, Java Native
Interface (JNI) 标准成为 java 平台的一部分,它允许 Java代码和其他语言写的代码进行交互。
JNI 一开始是为了本地已编译语言,尤其是 C和 C++而设计的,但是它并不妨碍你使用其他
语言,只要调用约定受支持就可以了。
使用 java 与本地已编译的代码交互,通常会丧失平台可移植性。但是,有些情况下这样
做是可以接受的,甚至是必须的,比如,使用一些旧的库,与硬件、操作系统进行交互,或
者为了提高程序的性能。 JNI 标准至少保证本地代码能工作在任何 Java 虚拟机实现下。
------------------------------------------------------------------
编写带有 native 声明的方法的 java 类
·使用 javac 命令编译所编写的 java 类
·使用 javah ?jni java 类名生成扩展名为 h 的头文件
·使用 C/C++实现本地方法
·将 C/C++编写的文件生成动态连接库
·ok
1) 编写 java 程序:这里以 HelloWorld 为例。
代码 1:
class HelloWorld {
public native void displayHelloWorld();
static {
System.loadLibrary("hello");
}
public static void main(String[] args) {
new HelloWorld().displayHelloWorld();
}
}
声明 native 方法:如果你想将一个方法做为一个本地方法的话, 那么你就必须声明改方法
为 native 的,并且不能实现。其中方法的参数和返回值在后面讲述。 Load 动态库:
System.loadLibrary("hello"); 加载动态库 (我们可以这样理解: 我们的方法 displayHelloWorld()
没有实现, 但是我们在下面就直接使用了, 所以必须在使用之前对它进行初始化) 这里一般
是以 static 块进行加载的。同时需要注意的是 System.loadLibrary();的参数“ hello”是动态库
的名字。
2) 编译
没有什么好说的了 javac HelloWorld.java
3) 生成扩展名为 h 的头文件 javah ?
jni HelloWorld 头文件的内容: /* DO NOT EDIT THIS FILE - it is machine generated */
1. include
/* Header for class HelloWorld */
1. ifndef _Included_HelloWorld
2. define _Included_HelloWorld
3. ifdef __cplusplus
extern "C" {
1. endif
/*
资源评论
maodi_lzc
- 粉丝: 1
- 资源: 4万+
下载权益
C知道特权
VIP文章
课程特权
开通VIP
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功