`

关于windows环境下的 JNI说明

阅读更多
关于windows环境下的 JNI说明

jni:java native interface(java 本地接口)
jni建立java语言与其它语言(c/c++)之间的桥梁 ,java—-调用-—>jni(hello方法)  jni—-调用-—>c/c++(hello方法)

编写jni步骤:
1. 编写JAVA类文件,如GetWaterTemp.java
package atm;

public class GetWaterTemp {
static {
System.loadLibrary("WaterTemp");// 加载WaterTemp 动态链接文件,不能加后缀名,会自动根据系统类型来判断后缀名的
}

public native int getWaterTemp();
}

注意:此处有package包,所以使用javac编译时需注意 。
2. javac -d . GetWaterTemp.java,会在当前目录下生产一个atm的文件夹,
atm文件夹下会生成一个叫GetWaterTemp.class 的文件。
3. 生成.h 头文件,javah atm.GetWaterTemp,这样会在当前目录下生成一个叫 atm_GetWaterTemp.h 的文件。
atm_GetWaterTemp.h 内容如下:

#include <jni.h>
/* Header for class atm_GetWaterTemp */

#ifndef _Included_atm_GetWaterTemp
#define _Included_atm_GetWaterTemp
#ifdef __cplusplus
extern "C" {
#endif
/*
* Class:     atm_GetWaterTemp
* Method:    getWaterTemp
* Signature: ()I
*/
JNIEXPORT jint JNICALL Java_atm_GetWaterTemp_getWaterTemp
  (JNIEnv *, jobject);

#ifdef __cplusplus
}
#endif
#endif


4. 编写.dll文件,使用vc6.0 新建一个工程projects/win32 dynamic-link library 叫 WaterTemp,选择empty dll,
新建一个class叫WaterTemp,打开WaterTemp.cpp,在里面添加代码 #include "atm_GetWaterTemp.h"引人头文件
(注意,在此之前需要先把atm_GetWaterTemp.h 文件放到工程 根目录下 ),继续添加方法
JNIEXPORT jint JNICALL Java_atm_GetWaterTemp_getWaterTemp
  (JNIEnv *, jobject) {
  return 90;
  }
 
  注意:此方法名是在 atm_GetWaterTemp.h 文件中的,不能修改。
5. 保存,编译。之后会在工程的根目录下的debug目录下生成 WaterTemp.dll 文件,这个文件正是我们所需要的.dll文件

****** A方法 *******
6. 将WaterTemp.dll(此文件名一定要和JAVA类中加载的 文件名保持一致) 文件复制到 系统的path目录下(一般jdk/bin目录下即可)
7. 在其他JAVA类中 正常调用 GetWaterTemp.java 类中的getWaterTemp()方法即可。
如:
public static void main(String[] args){
GetWaterTemp getwater = new GetWaterTemp();
System.out.println(getwater.getWaterTemp());
}

****** B方法 *******
6. 在src目录下新建一目录file 如:src/file/。然后将WaterTemp.dll 复制到file目录下。
7. 修改 GetWaterTemp.java 类文件为:
package atm;

public class Test {
public static void main(String[] args){
GetWaterTemp getwater = new GetWaterTemp();
System.out.println(getwater.getWaterTemp());
}
}





分享到:
评论

相关推荐

    关于Java的JNI开发时使用cl编译器的说明

    环境:Windows XP Professional、JDK 1.6、标准C库 说明:作为Java程序员,当与c程序员进行联合开发时会使用到JNI编程技术。此时要求Java程序员必须要会使用...学习对象:需要在Windows环境下进行JNI开发的Java程序员。

    windows_JNI_32.rar

    标题中的"windows_JNI_32.rar"表明这是一个在Windows平台上使用的、与JNI(Java Native Interface)相关的软件或工具包,且是适用于32位系统的。JNI是Java平台的一个核心特性,它允许Java代码与其他语言写的代码进行...

    jni4net-0.8.8.0.zip

    “dll”则指的是动态链接库,它是Windows操作系统下共享代码的一种方式,通常用于实现跨多个程序的功能。 在“jni4net-0.8.8.0-bin”这个压缩包中,我们预期会找到以下内容: 1. **jn4net.dll**:这是主要的桥梁...

    JNI实现原理权威指南

    要深入理解JNI的实现原理,本书《JNI实现原理权威指南》无疑是提供了一个全面的技术指导和规范说明。 ### 知识点一:JNI的概念及其重要性 JNI是Java平台标准版的一部分,它为Java代码和本地应用程序接口(API)...

    jniAPI JAVA的JNI编写帮助文档

    这个"jniAPI JAVA的JNI编写帮助文档"包含了关于如何使用JNI API来开发混合模式的Java应用的详细信息。 JNI的核心概念包括以下几个方面: 1. **本地方法接口(Native Method Interface)**: JNI定义了一组函数,...

    使用JNI调用本地接口(解决中文字符传递,源码+说明)

    JNI在很多场景下非常有用,比如当Java需要利用特定的本地库(如C/C++编写的库)或者需要高效地处理某些任务时。本教程将详细讲解如何使用JNI调用本地接口,特别是在处理中文字符传递时遇到的问题。 首先,我们需要...

    jni.rar_jni

    JNI在很多场合下都是必要的,比如当需要利用已有的C/C++库,或者需要提升性能时,因为本地代码通常比Java更快。在这个"jni.rar_jni"压缩包中,我们能看到一系列文件,它们都是围绕JNI的使用展开的。 首先,`ja....

    JNI_md.rar_jni_jni_md

    JNI在许多场景下都是必不可少的,比如当需要调用已有的C/C++库,或者利用硬件特性时。JNI_md是JNI的一部分,它包含了特定于平台的本地方法声明和定义,这些方法通常涉及到Java虚拟机(JVM)与本地代码之间的接口。 ...

    javaWebService 和 JNI调用VC++海康硬盘录像机拍照

    以下是关于这些知识点的详细说明: 1. **Java WebService**: WebService是一种基于开放标准(如XML、WSDL和SOAP)的跨平台通信协议,它允许不同系统间的应用通过网络共享数据和服务。在Java中,可以使用Apache CXF...

    jni编程指南(相当给力的说明文档)

    - **主要内容**:介绍了在Windows环境下实现Java本地方法的具体步骤。 - **关键步骤**: - Java调用C - 调试方法 - 其他相关信息 #### 知识点九:在C/C++中调用Java - **主要内容**:讲解了如何在C/C++环境中...

    jni使用说明

    9. **多线程支持**:如果Java代码在多线程环境下运行,每个线程都有自己的JNIEnv指针,因此在本地方法中需要考虑线程安全问题。 10. **性能优化**:尽管Java是一种高效的语言,但有些计算密集型任务或与硬件交互的...

    JNI(java调用C_C++代码)

    JNI在很多场景下非常有用,比如调用现有的C或C++库、提升性能或者利用硬件特性等。以下是对JNI编程过程的详细说明: 1. **编写Java代码**: 在Java中,我们需要声明本机方法(native method),这些方法将在C或C++...

    java通过JNI调用dll的事例 附说明

    Java编程语言虽然强大,但在某些特定情况下,如与操作系统底层交互或者使用已有的C/C++库时,我们可能需要借助JNI(Java Native Interface)来调用本地代码,比如DLL动态链接库。本教程将深入讲解如何使用Java通过...

    帮你快速上手JNI技术

    在文档提供的部分内容中,首先介绍了JNI的使用场景和目的,即在某些情况下,使用Java代码处理会遇到内存管理和性能瓶颈,这时需要借助JNI来使用非Java语言(如C/C++)编写的本地代码来提高性能和处理复杂系统调用等...

    Android之JNI初级篇

    2. **JNI开发环境**:介绍了如何设置开发环境,如在Windows上使用Cygwin_setup.exe安装Cygwin,这是一个模拟Linux环境的工具,使得开发者可以在Windows上使用gcc等命令行工具编译C/C++代码。 3. **JNI头文件生成**...

    JAVA操作注册表的JNI库和JAR包jRegistryKey

    Java是一种跨平台的编程语言,但在处理特定于操作系统的...它的设计考虑了32位和64位系统的兼容性,简化了Java开发者在Windows环境下的系统级编程。正确使用这个库,可以安全、高效地完成许多需要注册表访问的任务。

Global site tag (gtag.js) - Google Analytics