Windows下JNI的使用教程
JNI的使用大致有以下4个步骤:
一、在Java中写native方法
二、用javah命令生成C/C++头文件
三、写对应的C/C++程序实现头文件中声明的方法,并编译成库文件
四、在Java中加载这个库文件并使用
工具:
1. Eclipse for Java
2. Visual Studio 2015
依赖:
JDK和JRE:1.8.0_144版本
步骤:
在Eclipse新建一个java项目
添加一个java类,放在com.jni包下
注意:java代码都不要放到默认包下(就是不写package语句就会放到默认包),默认包下的方法在其他地方都不能调用!!
写native方法,native方法就是声明一个非java实现的方法,比如用C/C++实现
package com.jni;
public class JNI {
public native String getString();
}
在Eclipse生成,此时在项目目录会生成对应的.class文件,Eclipse会将.class文件放在项目目录的bin文件夹下

打开cmd,进入bin目录

运行javah命令,生成C/C++头文件,注意要带上java包名
注意:此处是在bin目录运行javah,不能进入com/jni下来运行javah,否则不能生成头文件。

此时在bin目录下生成了JNI.h头文件

头文件内容如下:
/* DO NOT EDIT THIS FILE - it is machine generated */
#include <jni.h>
/* Header for class com_jni_JNI */ #ifndef _Included_com_jni_JNI
#define _Included_com_jni_JNI
#ifdef __cplusplus
extern "C" {
#endif
/*
* Class: com_jni_JNI
* Method: getString
* Signature: ()Ljava/lang/String;
*/
JNIEXPORT jstring JNICALL Java_com_jni_JNI_getString
(JNIEnv *, jobject); #ifdef __cplusplus
}
#endif
#endif
接下来打开Visual studio 2015,创建一个空的win32控制台程序,在程序类型选择DLL:

配置JNI开发环境:
在【项目设置】 -> 【VC++目录】 -> 【包含目录】中,添加JNI头文件的路径
JNI头文件一般放在jdk目录下的include文件夹,还有include文件夹下的win32文件夹
注意release和debug以及32位和64位的选择


将刚刚生成的头文件复制到vs项目目录下,在项目中添加该头文件,同时添加cpp实现头文件中的函数

main.cppd代码如下:
#include "com_jni_JNI.h" JNIEXPORT jstring JNICALL Java_com_jni_JNI_getString
(JNIEnv *env, jobject obj) {
return env->NewStringUTF("string from C++");
}
生成项目,在项目目录的x64或release文件夹下生成了JNI.dll动态库,讲dll文件复制到Eclipse项目目录下

修改JNI.java代码,加载JNI库并添加运行代码
package com.jni;
public class JNI {
static {
System.loadLibrary("JNI");
}
public native String getString();
public static void main(String args[]) {
JNI jni = new JNI();
System.out.println(jni.getString());
}
}
生成并运行,就可以看到从c++中返回的字符串了

Windows下JNI的使用教程的更多相关文章
- Windows 下安装 Oracle 12c 教程
原文 Windows 下安装 Oracle 12c 教程 申明:本文原作者:Jmq 本文给大家带来的是 Oracle 12C 的安装教程. 1.准备 1.1 下载 Oracle 12c 安装程序 ...
- 图解Windows下 GIT GUI 使用教程
https://jingyan.baidu.com/article/19020a0a7ae6af529c284248.html 本篇经验将和大家介绍Windows下 GIT GUI 使用教程,希望对大 ...
- Windows下安装MySQL详细教程
Windows下安装MySQL详细教程 1.安装包下载 2.安装教程 (1)配置环境变量 (2)生成data文件 (3)安装MySQL (4)启动服务 (5)登录MySQL (6)查询用户密码 (7 ...
- windows下安装dirmap详细教程
今天安装一下dirmap,纯小白非常详细的安装过程 1.先去下载dirmap 下载地址:https://github.com/H4ckForJob/dirmap 点这个绿色的code,然后再点下面这个 ...
- windows下Gulp入门详细教程 &&gulp安装失败的原因(红色)
以下教程亲自实践可行: 另外添加一个Gulp自动编译.压缩.更新.测试的教程链接:https://markpop.github.io/2014/09/17/Gulp%E5%85%A5%E9%97%A8 ...
- Windows下JNI执行步骤
问题描述: java JNI使用 问题解决: JNI编写步骤: (1)编写带有native声明的方法的java类 (2)使用javac编译所写的java类,然后使用javah生成扩展名 ...
- windows下 jdk1.7安装教程图解
java编程的初学者在开始编码前都会遇到一个难题,那就是jdk1.7环境变量配置怎么操作,怎么安装,针对这个难题,小编特地为大家整理相关教程,不了解的朋友可以前往查看使用. 软件说明 虽然现在jdk出 ...
- Windows下PyInstaller的使用教程
直接使用Python开发的软件时有许多不方便的地方,如需要安装特定的Python环境,需要安装依赖库.为了便于部署,需要将Python源代码编译成可执行文件,编译后的可执行文件就能脱离python环境 ...
- windows下ACE安装使用教程(转)
ACE简介:ACE是一个跨平台的用于并发通信的C++框架.它提供了丰富的C++封装器和框架组件.使用ACE,开发者可以开发出高性能,实时的通信服务和应用.ACE利用进程间通信,事件分离,动态链接和并发 ...
随机推荐
- .Net Core 系列:2、ADO.Net 基础
目录: 1.环境搭建 2.ADO.Net 基础 3.ASP.Net Core 基础 4.MD5.Sha256.AES 加密 5.实现登录注册功能 6.实现目录管理功能 7.实现文章发布.编辑.阅览和删 ...
- (转)java之runnable jar与普通jar
背景:项目中有时候需要导出相关的jar包,可是总是不能分清楚. 1 导出包 导出普通jar包(可作为第三方库,类似dll,so等) 在eclipse中右键选择except->java->j ...
- Asp.net MVC Razor常见问题及解决方法
没有经验的童鞋就是这样磕磕碰碰出来的经验. 1,Datatype的错误提示消息无法自定义 这也许是Asp.net MVC的一个Bug.ViewModel中定义了DataType为Date字段: [Re ...
- 深入理解 JavaScript(三)
强大的原型和原型链 前言 JavaScript 不包含传统的类继承模型,而是使用 prototypal 原型模型. 虽然这经常被当作是 JavaScript 的缺点被提及,其实基于原型的继承模型比传统 ...
- 网站相关人员信息记录humans.txt
前面的话 robots.txt文件告诉搜索引擎哪些页面可以抓取,哪些页面不能抓取.而humans.txt文件则是为人类准备的,包含参加该网页设计和建立的相关人员的信息.本文将详细介绍humans.tx ...
- Python [目录]
[第一篇] Python 发展历史 [第二篇] Python 优缺点 [第三篇] Python 应用场景 [第四篇] Python Hello World程序 [第五篇] Python 基础知识 [第 ...
- Python爬虫从入门到放弃(二十一)之 Scrapy分布式部署
按照上一篇文章中我们将代码放到远程主机是通过拷贝或者git的方式,但是如果考虑到我们又多台远程主机的情况,这种方式就比较麻烦,那有没有好用的方法呢?这里其实可以通过scrapyd,下面是这个scrap ...
- Maven的下载和安装
1. Maven作用: 管理项目和jar包 2. jdk环境要求: maven3.3+需要jdk1.7以上的版本 3. 下载地址: http://maven.apache.org/download.c ...
- 字符串--hdu--3783--ZOJ
/* Name: 字符串--hdu--3783--ZOJ Author: shen_渊 Date: 17/04/17 20:58 Description: 明天开始刷字符串的题,先来道水题 */ #i ...
- jvm参数解析(含调优过程)
前阵 对底层账单系统进行了压测调优,调优的最后一步--jvm启动参数中,减小了线程的堆栈空间:-XX:ThreadStackSize=256K,缩减至原来的四分之一,效果明显,不过并没有调 ...