JNI简单HelloWorld
1、编写Java代码
建立hello目录,编写HelloWorld.java:
class HelloWorld
{
public native void displayHelloWorld();
static {
System.loadLibrary("hello");
} public static void main(String[] args) {
new HelloWorld().displayHelloWorld();
}
}
注意我们的displayHelloWorld()方法的声明,它有一个关键字native,表明这个方法使用java以外的语言实现。
方法不包括实现,因为我们要用c/c++语言实现它。
注意System.loadLibrary("hello")这句代码,它是在静态初始化块中定义的,系统用来装载hello共享库,这就是我们在后面生成的hello.dll
(如果在其他的操作系统可能是其他的形式,比如hello.so)
2、编译Java代码,并生成.h文件
javac HelloWorld.java ,生成class文件
javah HelloWorld ,生成.h文件(在java8之后,该命令可能改为 javac -h)
3、编写本地实现
在vs中新建控制台工程,输出选择dll
将HelloWorld.h添加进工程中
将java目录中的jni.h,jni_md.h包含到工程中

hello.cpp代码:
#include "stdafx.h" #include <jni.h>
#include "HelloWorld.h"
#include <stdio.h> JNIEXPORT void JNICALL
Java_HelloWorld_displayHelloWorld(JNIEnv *env, jobject obj)
{
printf("Hello world!/n");
return;
}
4、编译生成hello.dll
注意:需要生成Release版本的x64位dll文件

5、运行Java程序
将生成的hello.dll文件和之前的HelloWorld.class放在一起
java HelloWorld 运行

6、将dll文件放入系统环境变量
当使用System.loadLibrary()调用 Dll,可将dll文件所在系统目录放入系统环境变量即可
参见http://blog.csdn.net/forandever/article/details/5983846
JNI简单HelloWorld的更多相关文章
- android JNI 简单demo(2)它JNI demo 写
android JNI 简单demo(2)它JNI demo 写 一.搭建Cygwin 环境:http://blog.csdn.net/androidolblog/article/details/25 ...
- Android开发之JNI(一)--HelloWorld及遇到的错误解析
Android开发之JNI(一)--HelloWorld及遇到的错误解析 1.NDK环境搭建 參考http://blog.csdn.net/xiaoliouc/article/details/8 ...
- 一个JNI的helloworld小demo
最近想学习一下jni,在网上看了一些demo,自己也操作了一遍,首先我将我自己学习的demo网站贴出来:https://blog.csdn.net/lwcloud/article/details/78 ...
- SpringMVC学习简单HelloWorld实例
首先还是从一个简单的Hello World项目说起: 我机器的开发环境为: Ubuntu12.04(不同操作系统对本系列项目没有影响): 开发工具:Eclipse For JavaEE: 数据库:My ...
- makefile简单helloworld
最近要在unix系统上开发c++应用程序,但默认情况下unix编译c++程序需要使用makefile.其实makefile语法还是比较简单,看上去有点像ant.废话不说了,直接上helloworld. ...
- JNI之HelloWorld
什么是JNI? JNI java本地开发接口 JNI 是一个协议 这个协议用来沟通java代码和外部的本地代码(c/c++). 通过这个协议,java代码就可以调用外部的c/c++代码 外部的c/c+ ...
- JNI 简单例子
原文:http://www.cnblogs.com/youxilua/archive/2011/09/16/2178554.html 1,先把c语言的编译环境搭建好,windows下这里使用mingw ...
- [Android] Linux下JNI简单实现过程
大概梳理了一下JNI的过程: start->先写好A.java文件,里面添加native方法B,调用库C.so->编译成.class文件->用javac生成.h文件,文件包含Java ...
- IntelliJ IDEA平台下JNI编程—HelloWorld篇
转载请注明出处:[huachao1001的专栏:http://blog.csdn.net/huachao1001/article/details/53906237] JNI(Java Native I ...
随机推荐
- java反射——构造方法
大家都知道反射技术在Java里面时非常重要的一个技术点,因为Java好多框架的编写都是基于反射的,别的不多说,spring框架里面的IOC就是基于反射实现.那么什么是反射呢?JAVA反射机制是在运行状 ...
- 使用ServiceStack缓存技术
ServiceStack 是一个高性能的 .NET Web 服务框架,简化了开发 XML.JSON.JSV 和 WCP SOAP Web 服务.它定义了符合 Martin Fowlers 数据传输对象 ...
- 18.android studio 安装ing
1.首先得FQ,在谷歌中搜索android studio 2.安装时出现的问题. a. 解决方法,重启电脑,进入Bios,找到并将值设置为 :Intel Virtual Technology=Enab ...
- 用jq实现鼠标移入按钮背景渐变其他的背景效果
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- Docker Libnetwork driver API
以下内容均在libnetwork/driverapi目录下 Driver接口如下所示: // Driver is an interface that every plugin driver needs ...
- 【我的Android进阶之旅】 高效的设计稿标注及测量工具Markman介绍
前言 最近有个烦恼是UI设计师可能太忙了,经常给出的UI设计稿中有很多地方都没有标注,比如长度和颜色值等.这个时候每次都要通过RTX来联系UI设计师或者直接跑到UI设计师面前,喊他重新标注一下,特别影 ...
- CWM是什么?
CWM [1] (CommonWarehouseMetamodel公共仓库元模型)是OMG组织在数据仓库系统中定义了一套完整的元模型体系结构,用于数据仓库构建和应用的元数据建模.公共仓库元模型指定的 ...
- mysql 从零学习
一 .下载MySQL 访问MySQL的官网http://www.mysql.com/downloads/ 然后在页面中会看到“MySQL Community Server”下方有一个“download ...
- window下安装php的imagick和imagemagick扩展教程
最近的PHP项目中,需要用到切图和缩图的效果,在linux测试服务器上很轻松的就安装好php imagick扩展.但是在本地windows开发环境,安装过程遇到好多问题,在此与大家分享. 1. 下载 ...
- Memcached基础介绍
1.memcached是什么,有什么作用? )memcached是一个开源的.高性能的内存的缓存软件,从名称上看mem就是内存的意思,而cache就是缓存的意思. )memcached通过在事先规划好 ...