JNI是Java平台中的一个重要的功能,这里我把我做的Demo总结一下,分享一下,我会把每个步骤尽量的详细的展现出来。
这里我就不讲解JNI的原理了,google,百度一下,到处都是
好了,直接来讲步骤吧,文章最后给出了C++和Java的Demo
第一步:安装Java jdk,eclipse。
第二步,配置Java环境变量,java环境变量配置
第三步,新建一个Java应用程序,名为:TestNativeCode,包名:com.liyong.TestNativeCode,类名:TestNativeCode
第四步,在TestNativeCode类里面添加如下代码:
package com.liyong.TestNativeCode;

public class TestNativeCode {
public native void sayHello();
public static void main(String[] args) {
System.loadLibrary("NativeCode");
TestNativeCode nativeCode=new TestNativeCode();
nativeCode.sayHello();
}
}

第五步,编译Java文件
1,运行-->cmd-->进入TestNativeCode项目的src目录下编译该Java类,命令 javac ./com/liyong/TestNativeCode/TestNativeCode.java。在该TestNativeCode.java目录下会生成TestNativeCode.class文件
2,使用javah生成头文件,命令 javah -jni com.liyong.TestNativeCode.TestNativeCode。在src目录下生成com_liyong_TestNativeCode_TestNativeCode.h文件。

第六步,编译C++类库
1,打开VS2008,新建Win32 项目NativeCode,如图所示:

确定后,在“应用程序类型”中选择“DLL”,如图:

2,将上一步生成的com_liyong_TestNativeCode_TestNativeCode.h添加到项目头文件中。

3,在NativeCode项目的“源文件”中添加NativeCode.cpp文件,具体如蓉如下

#include "stdafx.h"
#include "com_liyong_TestNativeCode_TestNativeCode.h"
#include <iostream>
using namespace std; JNIEXPORT void JNICALL Java_com_liyong_TestNativeCode_TestNativeCode_sayHello(JNIEnv * env, jobject obj)
{
cout<<"Hello NDK!"<<endl;
//printf("Hello NDK!");
}

4,使用Release编译,生成NativeCode.dll,将其拷贝到java环境变量Java_Home的Bin目录下,比如,LZ的Java_Home目录是
C:\Program Files\Java\jdk1.6.0_25,将NativeCode.dll拷贝到C:\Program Files\Java\jdk1.6.0_25\bin目录下。

第七步,运行Java应用程序,会输出“Hello NDK!”,Ok,成功!这里只是一个简单的例子,具体的应用就靠大家举一反三啦

这里给出Demo的源码:C++:NativeCode.rar Java:TestNativeCode.rar

转自:http://www.cnblogs.com/cpcpc/archive/2012/08/13/2636199.html

Java调用C++类库--JNI的更多相关文章

  1. java 调用 C# 类库 实战视频, 非常简单, 通过 云寻觅 javacallcsharp 生成器 一步即可!

    java 调用 C# 类库 实战视频, 非常简单, 通过 云寻觅 javacallcsharp 生成器 一步即可! 通过 云寻觅 javacallcsharp 生成器 自动生成java jni类库,  ...

  2. java 调用 C# 类库搞定,三步即可,可以调用任何类及方法,很简单,非常爽啊

    java 调用 C# 类库搞定,三步即可,可以调用任何类及方法,很简单,非常爽啊 java 调用 C# 类库搞定,可以调用任何类及方法,很简单,非常爽啊 总体分三步走: 一.准备一个 C# 类库 (d ...

  3. windows和linux环境下java调用C++代码-JNI技术

    最近部门做安卓移动开发的需要调C++的代码,困难重重,最后任务交给了我,查找相关资料,没有一个教程能把不同环境(windows,linux)下怎么调用说明白的,自己在实现的过程中踩了几个坑,在这里总结 ...

  4. Linux平台Java调用so库-JNI使用例子

    1.确保gcc编译器已安装 2.编写HelloJNI.java代码,用native声明需要用C实现的函数.如果源程序是包含在package里的话,应该建立同样的文件夹结构,比如/home/swan/t ...

  5. Java调用C++动态链接库——Jni

    最近项目需要,将C++的算法工程编译成动态链接库,交给 Java后台当作函数库调用.就去了解了下Jni.使用起来还是比较方便的. 1.  首先编写Java的调用类.例如:    public clas ...

  6. Android使用JNI(从java调用本地函数)

    当编写一个混合有本地C代码和Java的应用程序时,需要使用Java本地接口(JNI)作为连接桥梁.JNI作为一个软件层和API,允许使用本地代码调用Java对象的方法,同时也允许在Java方法中调用本 ...

  7. Android JNI之JAVA调用C/C++层

    转载请声明:原文转自:http://www.cnblogs.com/xiezie/p/5929996.html 一.java调用本地函数的开发步骤: 1.编写本地方法的类(可以说是用来叙述本地方法的类 ...

  8. linux下java调用.so文件的方法1: JNI

    摘自http://blog.163.com/squall_smile/blog/static/6034984020129296931793/ https://my.oschina.net/simabe ...

  9. [JNI] Java 调用 C++ dll

    首先介绍一下JNI吧! JNI 是Java提供的一个用于调用本地接口的接口层,位于Java代码 和 本地代码之间的一层:主要功能是 数据类型的转换,还有就是通过这一层来调用本地代码! 下面就说说Jav ...

随机推荐

  1. Mybatis学习(三)XML配置文件之mybatis-config.xml

    1.MyBatis的配置文件结构 1.1 properties 这些是外部化的,可替代的属性,这些属性也可以配置在典型的 Java 属性配置文件中,或者通过 properties 元素的子元素来传递. ...

  2. Postman高级应用——流程控制、调试、公共函数、外部数据文件

    postman客户端下载地址:https://www.getpostman.com/apps 目录 流程控制 调试 公共函数 外部数据文件 流程控制 流程控制简言之就是设置接口的执行顺序,流程控制只有 ...

  3. 基于Apache axis2开发Java Web服务

    1.安装配置axis2环境 1)下载axis2-1.4.1-war(发布webservice)和axis2-1.4.1-bin.zip(webservice调用使用的各种包) 下载好后把axis2-1 ...

  4. hdu1754线段树的单点更新区间查询

    I Hate It Time Limit: 9000/3000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total ...

  5. PHP和JS判断变量是否定义

    PHP中: 通过isset(变量名)来判断,定义返回true/未定义返回false JS中: 通过typeof来判断.

  6. 最好用的css辅助工具——SASS&LESS

    前言 首先,小编给大家解释一下什么是SCSS和LESS,Sass 是一款强化 CSS 的辅助工具,它在 CSS 语法的基础上增加了变量 (variables).嵌套 (nested rules).混合 ...

  7. Python selenium 文件自动下载 (自动下载器)

    MyGithub:https://github.com/williamzxl 最新代码已经上传到Github,以下版本为stupid版本. 由于在下载过程中需要下载不同文件,所以可以把所有类型放在Va ...

  8. redis的发布订阅模式pubsub

    前言 redis支持发布订阅模式,在这个实现中,发送者(发送信息的客户端)不是将信息直接发送给特定的接收者(接收信息的客户端),而是将信息发送给频道(channel),然后由频道将信息转发给所有对这个 ...

  9. nginx + keepalived 实现高可靠web网站

    组网图: 配置信息: 左边nigx 服务器的 /usr/local/nginx/conf/nginx.conf #user  nobody; worker_processes  1; #error_l ...

  10. OpenGL ES2.0光照

    一.简单光照原理 平行光(正常光) 光照效果=   环境颜色 + 漫反射颜色 + 镜面反射颜色 点光源 光照效果=   环境颜色 + (漫反射颜色 + 镜面反射颜色)× 衰减因子 聚光灯 光照效果= ...