`

关于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程序员。

    JNI的使用实例与讲解(初学必备)

    解决在windows环境下,java调用VC++编写的动态链接库dll,文档中写了三个例子,①简单的入门小例子 ②java传整型数给dll,返回整型数,③java传两个整型数,返回整型数组,每个例子都有详细的说明,帮助初学者理解JNI...

    jacob-project:JACOB是一个JAVA-COM桥,允许您从Java调用COM自动化组件。 它使用JNI对COM库进行本地调用。 JACOB在支持32位和64位JVM的x86和x64环境中运行。 该存储库从Sourceforge 202009迁移而来

    Java库和dll将Java开发人员与基础Windows库隔离开,因此Java开发人员不必编写自定义JNI代码。Jacob不用于创建ActiveX插件或Microsoft Windows应用程序内部的其他模块。储存库JACOB(Java-COM桥) Source在上在...

    java8源码-opus:opus编解码库在windows、android、linux上使用

    分别将opus_demo、test_opus_api、test_opus_decode、test_opus_encode设置为启动项目并运行,运行过程中没有报错,则说明opus.lib库正确且可用。 定义jni接口,生成.h文件 按照java\opus\src\cn\com\test\opus中...

    《Java编程技巧典型案例解析》随书光盘

    实例42 Matlab环境下Socket网络功能的实现 实例43 用Java实现P2P网络通信 实例45 Java SMTP协议电子邮件传送剖析 实例46 Java Applet与浏览器间的通信技术 实例47 Java实现邮件群发 实例48 应用Java和JSP...

    开发项目用SWING与RCP与SWT.JFACE的分析

    (注意:以下的例子和说明主要针对Windows平台,其它的操作系统应该大同小异)。首先要在Eclipse安装文件中找到SWT包,Eclipse组织并不提供单独的SWT包下载,必须下载完整的Eclipse开发环境才能得到SWT包。SWT是作为...

    java版sm4源码-gmssl-java-sdk:gmssl-java-sdk

    GmSSL.c中简易实现1,2描述中的jni接口; 简易封装sm2,sm3,sm4,方便直接调用; 二: lib包简要说明 resource/lib目录包含已经编译好Linux版本的so文件及Windows 10(x64)版本dll文件, 可以导入library直接使用;如果不...

    新版Android开发教程.rar

    � Android 更像一款桌面环境为 Java 的 Linux 操作系统。有助于 Google 实现其 " 随时随地为每个人提供信 息 " 的企业战略。 HTC HTC HTC HTC Dream/G1 Dream/G1 Dream/G1 Dream/G1 具体配置 硬件 3.17 英寸 HVGA ...

    JAVA上百实例源码以及开源项目源代码

     关于数字签名:产生RSA密钥对(myKeyPair),得到RSA密钥对,产生Signature对象,对用私钥对信息(info)签名,用指定算法产生签名对象,用私钥初始化签名对象,将待签名的数据传送给签名对象(须在初始化之后),用公钥...

    java开源包1

    目前互联网很多服务如Open API,很多大头公司如Google,Yahoo,Microsoft等都提供了OAUTH认证服务,这些都足以说明OAUTH标准逐渐成为开放资源授权 的标准。 Java的命令行处理类库 JArgs JArgs 是一个 Java 语言用来...

    JAVA上百实例源码以及开源项目

     关于数字签名:产生RSA密钥对(myKeyPair),得到RSA密钥对,产生Signature对象,对用私钥对信息(info)签名,用指定算法产生签名对象,用私钥初始化签名对象,将待签名的数据传送给签名对象(须在初始化之后),用公钥...

    java开源包11

    目前互联网很多服务如Open API,很多大头公司如Google,Yahoo,Microsoft等都提供了OAUTH认证服务,这些都足以说明OAUTH标准逐渐成为开放资源授权 的标准。 Java的命令行处理类库 JArgs JArgs 是一个 Java 语言用来...

    java开源包2

    目前互联网很多服务如Open API,很多大头公司如Google,Yahoo,Microsoft等都提供了OAUTH认证服务,这些都足以说明OAUTH标准逐渐成为开放资源授权 的标准。 Java的命令行处理类库 JArgs JArgs 是一个 Java 语言用来...

    java开源包3

    目前互联网很多服务如Open API,很多大头公司如Google,Yahoo,Microsoft等都提供了OAUTH认证服务,这些都足以说明OAUTH标准逐渐成为开放资源授权 的标准。 Java的命令行处理类库 JArgs JArgs 是一个 Java 语言用来...

    java开源包6

    目前互联网很多服务如Open API,很多大头公司如Google,Yahoo,Microsoft等都提供了OAUTH认证服务,这些都足以说明OAUTH标准逐渐成为开放资源授权 的标准。 Java的命令行处理类库 JArgs JArgs 是一个 Java 语言用来...

    java开源包5

    目前互联网很多服务如Open API,很多大头公司如Google,Yahoo,Microsoft等都提供了OAUTH认证服务,这些都足以说明OAUTH标准逐渐成为开放资源授权 的标准。 Java的命令行处理类库 JArgs JArgs 是一个 Java 语言用来...

    java开源包10

    目前互联网很多服务如Open API,很多大头公司如Google,Yahoo,Microsoft等都提供了OAUTH认证服务,这些都足以说明OAUTH标准逐渐成为开放资源授权 的标准。 Java的命令行处理类库 JArgs JArgs 是一个 Java 语言用来...

    java开源包4

    目前互联网很多服务如Open API,很多大头公司如Google,Yahoo,Microsoft等都提供了OAUTH认证服务,这些都足以说明OAUTH标准逐渐成为开放资源授权 的标准。 Java的命令行处理类库 JArgs JArgs 是一个 Java 语言用来...

    java开源包8

    目前互联网很多服务如Open API,很多大头公司如Google,Yahoo,Microsoft等都提供了OAUTH认证服务,这些都足以说明OAUTH标准逐渐成为开放资源授权 的标准。 Java的命令行处理类库 JArgs JArgs 是一个 Java 语言用来...

    java开源包7

    目前互联网很多服务如Open API,很多大头公司如Google,Yahoo,Microsoft等都提供了OAUTH认证服务,这些都足以说明OAUTH标准逐渐成为开放资源授权 的标准。 Java的命令行处理类库 JArgs JArgs 是一个 Java 语言用来...

Global site tag (gtag.js) - Google Analytics