JNI实例学习
2009-12-04 16:54
127 查看
最近看《深入Java虚拟机》看到Java本地接口,而且之前接触到一个应该使用JNI的程序,那是一个利用GPRS Modem发送手机短信的程序,由于发送短信要对串口编程,明显不是Java的强项,所以用用C++做了发送短信的程序,本来利用JNI就可以实现Java调用C++,但是实现者却利用Socket通信来实现......今天再次看到JNI,想亲手试试看。
开发步骤:
1. 编写Java程序
2. 编译该Java程序
3. javah生成.h头文件
4. 生成动态链接库文件
5. 运行Java程序测试
1. 编写Java程序
编写MyNative.java 并保存,比如在C盘下
2. 编译该Java程序
C:/>javac MyNative.java
3. javah生成.h头文件
C:/>javah MyNative
生成MNative.h 文件,内容如下:
4. 生成动态链接库文件
打开Microsoft Visual Studio 2008
New -> Project,并选Win32 Project,如下图
在弹出窗口中点击Next,出现如下窗口,选择Dll,点击Finish
打开MyNative.cpp,编辑代码如下
添加MyNative.h文件到工程的头文件目录如下图(我是将该文件拷贝到此路径下后再添加)
将%JAVA_HOME%/include下的所有头文件,.h文件都拷贝到Microsoft Visual Studio 2008 的include路径下
之后点击Build->Build Solution,状态栏显示Build succeeded构建成功。在工程的Debug目录下生成了MyNative.dll文件
5. 运行Java程序测试
将MyNative.dll文件拷贝到MyNative.java同一路径下,执行后得到结果
总结
开发步骤:
1. 编写Java程序
2. 编译该Java程序
3. javah生成.h头文件
4. 生成动态链接库文件
5. 运行Java程序测试
1. 编写Java程序
编写MyNative.java 并保存,比如在C盘下
public class MyNative{ static{ System.loadLibrary("MyNative"); } public native static void HelloWord(); public static void main(String[] argc) { HelloWord(); } }
2. 编译该Java程序
C:/>javac MyNative.java
3. javah生成.h头文件
C:/>javah MyNative
生成MNative.h 文件,内容如下:
/* DO NOT EDIT THIS FILE - it is machine generated */ #include <jni.h> /* Header for class MyNative */ #ifndef _Included_MyNative #define _Included_MyNative #ifdef __cplusplus extern "C" { #endif /* * Class: MyNative * Method: HelloWord * Signature: ()V */ JNIEXPORT void JNICALL Java_MyNative_HelloWord (JNIEnv *, jclass); #ifdef __cplusplus } #endif #endif
4. 生成动态链接库文件
打开Microsoft Visual Studio 2008
New -> Project,并选Win32 Project,如下图
在弹出窗口中点击Next,出现如下窗口,选择Dll,点击Finish
打开MyNative.cpp,编辑代码如下
// MyNative.cpp : Defines the exported functions for the DLL application. // #include "stdafx.h" #include <stdio.h> #include "MyNative.h" JNIEXPORT void JNICALL Java_MyNative_HelloWord (JNIEnv *env, jclass jobject) { printf("hello word!/n"); }
添加MyNative.h文件到工程的头文件目录如下图(我是将该文件拷贝到此路径下后再添加)
将%JAVA_HOME%/include下的所有头文件,.h文件都拷贝到Microsoft Visual Studio 2008 的include路径下
之后点击Build->Build Solution,状态栏显示Build succeeded构建成功。在工程的Debug目录下生成了MyNative.dll文件
5. 运行Java程序测试
将MyNative.dll文件拷贝到MyNative.java同一路径下,执行后得到结果
总结
相关文章推荐
- jni学习实例(二)-a7105模块驱动之jni
- Android JNI和NDK学习(08)--JNI实例一 传递基本类型数据
- Android JNI和NDK学习(09)--JNI实例二 传递类对象
- Android JNI和NDK学习(09)--JNI实例二 传递类对象
- Android JNI和NDK学习(09)--JNI实例二 传递类对象
- Android JNI学习之第一个入门实例(确实花了不少功夫,也遇到了很多阻碍,不过还好,最终解决,记录下)
- Android JNI和NDK学习(08)--JNI实例一 传递基本类型数据
- Android JNI学习之第一个入门实例
- Java的JNI学习和简单实例
- Android JNI学习之第一个入门实例
- Android JNI和NDK学习(08)--JNI实例一 传递基本类型数据
- [webGL学习]基于three.js构建WebGL实例讲解大纲
- PHP框架学习2——ZendFramework的介绍、安装和实例运行
- .Net 2.0实例学习:WebBrowser页面与WinForm交互技巧
- python3.4学习笔记(十) 常用操作符,条件分支和循环实例
- Java学习-014-文本文件写入实例源代码(两种写入方式)
- ((ios开发学习笔记九)) Simple TableView 实现(附 实例源码)
- java连接oracle实例学习
- Android JNI实例代码(一)
- python3.4学习笔记(十三) 网络爬虫实例代码,使用pyspider抓取多牛投资吧里面的文章信息,抓取政府网新闻内容