java里的native方法的使用正解
来源:互联网 发布:p2p网络控制软件 编辑:程序博客网 时间:2024/06/05 12:35
在网上看到各种帖子谈论java的native方法,这是java用来弥补其运行速度慢而利用C的措施,可以说是java与C/C++的接口,但是网上这类帖子太多而且讲述的方法都很复杂,今天我想总结一下。
步骤:
1.写一个java类,例如下面的HelloWorld.java
public class HelloWorld {
private native void print();
static
{
System.loadLibrary("Hello");
}
public static void main(String[] args) {
new HelloWorld().print();
}
}
注意(1)上面的native关键字,在这是说明print方法不是用java实现的,static{}类似于初始化工作。
(2)System.loadLibrary("Hello");是程序要导入Hello.dll这个文件,这个文件是用C/C++写的,而且必须包含print()方法的实现。
(3)最好别用Eclipse写,因为我一开始这样做后死活都不能通过javah。
2.写完java文件后,打开命令行窗口,在java文件目录下输入javac HelloWorld.java进行编译生成HelloWorld.class文件,这一步就不多说了。
3.在class文件目录下再次用dos命令javah -jni HelloWorld生成HelloWorld.h文件
4.到重点了,打开vc6.0或者VS新建一个C++DLL工程,例如Hello,再在工程里新建一个Hello.c文件,写下以下代码:
#include<jni.h>
#include<stdio.h>
#include"HelloWorld.h"
JNIEXPORT void JNICALL
Java_HelloWorld_print
(JNIEnv *env, jobject obj)
{
printf("Hello World!\n");
return;
}
注意:
(1)include jni.h文件,这个头文件在你jdk目录下的include目录下,但光这个头文件还不够,因为jni.h里面还include其他头文件,包括
- \jdk\include\win32\jawt_md.h
- \jdk\include\win32\jni_md.h
- 找出这些头文件后当然要拷贝到你的VC++或VS的Include目录下,如vc6.0的是E:\Program Files\Microsoft Visual Studio\VC98\Include
- 这一步相当重要,否则是不能通过编译的
- (2)把HelloWorld.h文件放到工程当前目录下
- 5.用vc或vs编译后便得到我们想要的Hello.dll
- 6.激动人心时刻到了,把Hello.dll文件放到java文件相同目录下运行,得到结果如下图所示
- java里的native方法的使用正解
- Java的native方法使用
- JAVA中native方法的使用
- java中native方法的使用
- native方法的使用
- java的native方法
- Java的native方法
- Java的native方法
- Java的native方法
- Java的native方法
- Java的native方法
- Java的native方法
- Java的native方法
- Java的native方法
- Java的native方法
- Java的native方法
- Java的native方法
- Java的native方法
- flash中注册时间的第四个参数useWeakReferences
- QT学习小技巧
- 查询mysql数据库(某个数据库)某张表的所有列名;查询某个数据库所有表名
- 值类型介绍——float类型
- 2011.11.12 POJ1426 一道引我深思的问题
- java里的native方法的使用正解
- 字符串转换成整数
- What's the difference and compatibility of CGLayer and CALayer?
- 学习C++从入门到精通的的十本最经典书籍
- Bada学习- (三十二)C++以及Flash应用开发流程之创建应用档案
- 资治通鉴,卷五十九,硃俊的做事原则
- linux RHEL 修改hostname 不需要重启机器
- Linux下PV操作与共享存储区通信
- oracle组织机构代码验证函数