JNI(java native interface):即java本地调用C的接口。

先看整体运行:

下面是过程:

#vim test.java

 public class test{

     public native static int add(int a, int b);  //指明本地函数
static{
System.loadLibrary("add"); //指定动态库
}; public static void main(String args[]){ int ret = ; ret = add(, ); System.out.println("hello world! " + ret + "\n");
}
};

既然指定了动态库,那么这个库从何而来?对新手来说使用javah 这个命令就可以了,根据这个命令生成的头文件生成库。

#javac test.java

#javah -jni test

此时生成了test.h文件,修改如下:

#vim test.h

 #include <jni.h>
jint Java_test_add (JNIEnv *env, jclass obj, jint a, jint b)
{
return a + b;
}

把这个头文件变成.c文件,不解释;注意:头文件没有的需要指定路径,我这里之前已经配置好了的。

#mv test.h test.c

下面开始生成动态库:

#gcc -c -fPIC test.c -o test.o          //-fPIC指定与位置无关

#gcc -shared test.o -o libadd.so        //链接生成动态库

最后执行java:

#LD_LIBRARY_PATH=. java test         //指定库的路径为本目录

java通过JNI接口调用C语言-初级的更多相关文章

  1. java短信接口调用

    java短信接口调用 之前一直在一个传统的单位上班好多听容易的技术都没接触过,即使有时候想搞一搞类似于支付宝支付,短信接口调用,微信公众号,小程序之类等功能,一直有心无力终于跳槽了,估计是氛围的原因吧 ...

  2. java web api接口调用

    Web Services 被W3C进行了标准化定义. Web Services 发布到网上,可以公布到某个全局注册表,自动提供服务URL,服务描述.接口调用要求.参数说明以及返回值说明.比如中国气象局 ...

  3. java之远程接口调用

    一.通过地址栏传值 1.项目结构 2.pom.xml <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi ...

  4. JAVA用JNI方法调用C代码实现HelloWorld

    一.首先是java运行环境的搭建,到官网下载java jdk安装即可(注意要修改环境变量).还可以顺便安装eclipse. 二.编写java代码,文件名HelloWorld.java public c ...

  5. java jni 调用c语言函数

    今日在hibernate源代码中遇到了native关键词,甚是陌生,就查了点资料,对native是什么东西有了那么一点了解,并做一小记. native关键字说明其修饰的方法是一个原生态方法,方法对应的 ...

  6. OpenCV4Android开发之旅(一)----OpenCV2.4简介及 app通过Java接口调用OpenCV的示例

    转自:  http://blog.csdn.net/yanzi1225627/article/details/16917961 开发环境:windows+ADT Bundle+CDT+OpenCV-2 ...

  7. java本地方法如何调用其他程序函数,方法详解

    JNI是Java Native Interface的缩写,中文为JAVA本地调用.从Java 1.1 开始,Java Native Interface (JNI)标准成为java平台的一部分,它允许J ...

  8. Java筑基 - JNI到底是个啥

    在前面介绍Unsafe的文章中,简单的提到了java中的本地方法(Native Method),它可以通过JNI(Java Native Interface)调用其他语言中的函数来实现一些相对底层的功 ...

  9. 【Java的JNI快速学习教程】

    1. JNI简介 JNI是Java Native Interface的英文缩写,意为Java本地接口. 问题来源:由于Java编写底层的应用较难实现,在一些实时性要求非常高的部分Java较难胜任(实时 ...

随机推荐

  1. c# 集合的交集、并集、差集

    , , , , }; , , , , , }; var jiaoJi = oldArray.Intersect(newArray).ToList();//2,4,5 var oldChaJi = ol ...

  2. python基础之 re(正则表达式)模块学习

    今天学习了Python中有关正则表达式的知识.关于正则表达式的语法,不作过多解释,网上有许多学习的资料.这里主要介绍Python中常用的正则表达式处理函数. re.match re.match 尝试从 ...

  3. LInux下安装jdk与环境配置与Webstorm的安装

    个人比较喜欢Webstorm这款软件,但是毕设要做的网站打算在Linux下做,所以就想在Linux上装个Webstorm.刚开始下载好后运行提示没有装jdk,然后apt-get install来安装还 ...

  4. 创建style和修改style

    1.创建style 在res/values/styles.xml中设置style 根元素<resource> 子元素:<style> 属性:name:样式的名称 parent: ...

  5. php 表单校验函数库(判断email格式是否正确、http地址是否合法有效、手机号码是否合法)

    /** * 表单校验函数库 */ /** * 判断email格式是否正确 * @param $email */ function is_email($email) { return strlen($e ...

  6. 动态加载Layout 与 论Activity、 Window、View的关系

    1)动态加载Layout的代码是 getWindow().setContentView(LayoutInflater.from(this).inflate(R.layout.main, null)); ...

  7. android xml解析 sax

    1.简要概述 Android 各种文件都是xml格式的,还有标准的webservice返回的是xml文件,虽然现在的json使用在移动设备端越来越广泛,但是xml格式的解析感觉还是相当必要. 2.sa ...

  8. 限制TextBox输入,只能输入Double类型数字

    public class TextBoxDouble : TextBox { public TextBoxDouble() { KeyDown += TextBoxDouble_KeyDown; Te ...

  9. [置顶] CSDN博客第三期云计算最佳博主评选

    CSDN博客第二期云计算最佳博主排行圆满结束,恭喜所有上榜用户,为继续展示云计算方向的优秀博主,发掘潜力新星,为云计算方向的博客用户提供平台,CSDN博客第三期云计算最佳博主排行开始.同时,获奖者有机 ...

  10. string 到 wstring的转换

    string 到 wstring的转换_一景_新浪博客     string 到 wstring的转换    (2009-08-10 20:52:34)    转载▼    标签:    杂谈    ...