这个方法挺方便的……(改写“二、Java调用C语言(JNative法)“的例子)

一、访问https://github.com/twall/jna ,下载jna-4.1.0.jar(版本不同名字不同),把它放在你jdk下的\jre\lib\ext目录下

二、在 F:\MinGW\Jna新建 Test.java:

import com.sun.jna.Native;

public class Test {

  public static void main(String[] args) {

    Lib lib = (Lib) Native.loadLibrary("test", Lib.class);

    // 例1

    int re1 = lib.add(11, 9);

    System.out.println("例1:addresult = "+re1);

    // 例2

    int len=3;

    int[] a = {11, 18, 21};

    int[] b = {44, 56, 100};

    int[] c = new int[3];

    lib.addArray(a, b, c, len);

    for (int i = 0; i < len; i++) {

      System.out.println("例2:addArray"+(i+1)+" = "+c[i]);

    }

    // 例3

    String inputString = "kun";

    String outputString = lib.stringFun(inputString);

    System.out.println("例3:outputString = "+outputString);

  }

}

三、再新建一个 Lib.java:

import com.sun.jna.Library;

public interface Lib extends Library {

  int add(int a, int b);

  void addArray(int[] a, int[] b, int[] c,int len);

  String stringFun(String str1);

}

四、再新建一个 test.c:

#include <stdio.h>

#include <malloc.h>

int add(int a, int b) {

  return (a + b);

}

void addArray(int *a,int *b,int *c,int len) {

  int i;

  for(i=0;i<len;i++) {

    c[i]=a[i]+b[i];

  }

}

char* stringFun(char *str1) {

  printf("例3:intputString = %s\n",str1);

  char *str2 = (char*)malloc(sizeof(char)*17);

  str2 = "HG-U133_Plus_2.0";

  return str2;

}

五、生成dll:

方法一:如果安装了MinGW

f:

cd MinGW/Jna

gcc -Wall -shared test.c -o test.dll

javac Test.java

java Test

这时目录下新生成了test.dll、Test.class、Lib.class

效果:

方法二:如果安装了Rtools(注意:我是Win7系统)

f:

cd MinGW/Jna

R CMD SHLIB test.c

javac Test.java

java Test

这时目录下新生成了test.dll、test.o、Test.class、Lib.class

3、Java调用C语言(JNA法)的更多相关文章

  1. 分享:写了一个 java 调用 C语言 开发的动态库的范例

    分享:写了一个 java 调用 C语言 开发的动态库的范例 cfunction.h   代码#pragma once#ifdef __cplusplusextern "C" {#e ...

  2. JAVA调用C语言写的SO文件

    JAVA调用C语言写的SO文件 因为工作需要写一份SO文件,作为手机硬件IC读卡和APK交互的桥梁,也就是中间件,看了网上有说到JNI接口技术实现,这里转载了一个实例 // 用JNI实现 // 实例: ...

  3. JAVA 调用 R 语言

    1 简介 R是统计计算的强大工具,而JAVA是做应用系统的主流语言,两者天然具有整合的需要.关于整合,一方面,R中可以创建JAVA对象调用JAVA方法,另一方面,JAVA中可以转换R的数据类型调用R的 ...

  4. Java调用R语言

    R是统计计算的强大工具,JAVA是做应用系统的主流语言.JAVA负责系统的构建,R用来做运算引擎,从而实现应用型和分析性相结合的系统. 一.Rserve(远程通信模式) Rserve是一个基于TCP/ ...

  5. JAVA 调用 R 语言之升华篇

    由于项目的需要,最近做了一个javaWeb调用R的组件,在这里,我把自己走的一些弯路给大家总结一下: 一.选取什么插件作为java和R之间的通信? 1. 在传统的方式中,大致可以分为两类:一类是JRI ...

  6. 2、Java调用C语言(JNative法)

    这个方法也是挺麻烦的…… 一.下载JNative.jar,把它放在你jdk下的\jre\lib\ext目录下 二.在 F:\MinGW\JNative 新建 Test.java: public cla ...

  7. 1、Java调用C语言(本地法)

    这是一个比较麻烦的方法..   一.首先,你要先安装一个VC,我的装在了D:\software\C++\Microsoft Visual Studio   二.我的jdk安装目录是D:\Program ...

  8. Java如何调用C语言程序,JNI技术

    Java为什么要调用C语言编写的程序因为涉及操作系统底层的事件,Java是处理不了的,例如用户上传一个视频文件,需要后台给视频加上水印,或者后台分离视频流和音频流,这个事Java就做不了,只能交给C语 ...

  9. java调用dll-JNA

    介绍 给大家介绍一个最新的访问本机代码的 Java 框架 —JNA . JNA(Java Native Access) 框架是一个开源的 Java 框架,是 SUN 公司主导开发的,建立在经典的 JN ...

随机推荐

  1. 如何查看 mysql 的视图?

    1.查询表(包括view) mysql> use iips; Database changed mysql> show tables; +------------------------- ...

  2. mysql 创建用户和授权

    https://www.cnblogs.com/sos-blue/p/6852945.html

  3. SQL create file遇到操作系统错误5拒绝访问

    当在sql server 2014创建一个数据库时出现错误:尝试打开或创建物理文件 'G:\Test.mdf' 时,CREATE FILE 遇到操作系统错误 5(拒绝访问). 原因及解决方法如下: 这 ...

  4. eigen 中四元数、欧拉角、旋转矩阵、旋转向量

    一.旋转向量 1.0 初始化旋转向量:旋转角为alpha,旋转轴为(x,y,z) Eigen::AngleAxisd rotation_vector(alpha,Vector3d(x,y,z)) 1. ...

  5. oracle备份和还原

    用exp命令即可完成,但要看具体的备份方式. 1. 导出一个完整数据库 exp system/manager file=bible_db log=dible_db full=y 2. 导出数据库定义而 ...

  6. leetcode 239. 滑动窗口最大值(python)

    1. 题目描述 给定一个数组 nums,有一个大小为 k 的滑动窗口从数组的最左侧移动到数组的最右侧.你只可以看到在滑动窗口内的 k 个数字.滑动窗口每次只向右移动一位. 返回滑动窗口中的最大值. 示 ...

  7. 关于db4o的透明激活与激活声明

    关于db4o的透明激活与激活声明 有关于透明激活,其介绍可以参看这里:http://www.cnblogs.com/redmoon/archive/2008/02/23/1078619.html 文中 ...

  8. svn访问版本库时一直提示: please wait while the repository browser is initializing

    最近不知道做了什么操作,原来正常的SVN Check In/Out都无法正常操作. 正常Check In的动作,几秒钟就会操作完成,但是我却等了好久好久,然后提示Connection timed ou ...

  9. netcore 使用redis session 分布式共享

    首先准备redis服务器(docker 和redis3.0内置的哨兵进行高可用设置) 网站配置Redis作为存储session的介质(配置文件这些略).然后可以了解一下MachineKey这个东西.( ...

  10. Service-Oriented Architecture,SOA(转)

    http://blog.csdn.net/WOOSHN/article/details/8036910 介绍: IT体系结构已非常成熟,它是一种成功处理典型IT问题的方法.体系结构中一个受到很大重视且 ...