最近项目需要使用JNI调用c++动态库,在网上找了些相资料大部分都是dll 的调用生成,so方面的比较少,不是很全所以刚刚测试通过就把自己的心得写下来了。

1.在项目包中定义自己和C++调用接口类;

2.将java编译好的class文件用javah -jni  打包成头文件.h

这里我的Class文件放在target\classes文件下,com.decard.util是我的包名,ControlInterface是我的类名运行生成后会在classes 生成一个com_decard_util_ControlInterface.h头文件;

3.编写C++动态库生成so或dll 文件,我的是Linux系统所以生成的是so文件,放在syslib路径下libControlInterface.so ;

4.编写动态库调用类代码如下:

public class ControlInterface {
static{
  System.loadLibrary("ControlInterface");
}
/**
 *
 * @param InUserData 用户输入环境数据
 * @param userID 用户ID
 * @return 返回字符串数据
 */
public native static String initConnection(String InUserData,String userID);
/**
 *
 * @param Date 业务操作数据
 * @param userID 用户ID
 * @return
 */
public native static String businessService(String Date,String userID);
/**
 *
 * @param IPAddress 用户访问IP地址
 * @param userID 用户ID
 * @return
 */
public native static void initAddress(String IPAddress,String userID);

注意编写的动态库调用类尽量使用生成头文件接口类,如果不想使用这个类可以new ControlInterface 的方式进行调用如:

public static Proce***esultBean infoConnection(String data,String userInfo){

ControlInterface ci=new ControlInterface();

String getback = ci.initConnection(data, userInfo);
   log.info("返回数据:"+getback);
   Proce***esultBean resultBean = new Proce***esultBean();
   resultBean.setData(getback);
   resultBean.setUserInfo(userInfo);
  return resultBean;
  }

因为我的接口和实现类不是同一个包所采用的new ControlInterface;

转载于:https://blog.51cto.com/1412404/1168364

java+JNI 生成包头文件与调用实例相关推荐

  1. 生成jni的android.mk,Android Studio 3.5版本JNI生成SO文件详解

    学习在于记录,把自己不懂得容易忘记得记录下,才是最好得选择. 废话不多说,想要在Android开发中嵌入c/c++代码,直接开始如下步骤 1.创建需要调用的Java类 在你某个指定的包下创建如下类pa ...

  2. java动态生成pdf文件的方法

    java动态生成pdf文件 文章目录 java动态生成pdf文件 前言 一.生成pdf模板 二.使用步骤 1.使用jar包 2.pdf实现方法 总结 前言 java开发过程中难免会遇到生成文件的需求, ...

  3. Java如何通过WSDL文件来调用这些web service

    下面我们来看Java如何通过WSDL文件来调用这些web service: 注意,以下的代码并没有经过真正的测试,只是说明这些情况,不同版本的Axis相差很大,大家最好以apache网站上的例子为准, ...

  4. Java建立Zip压缩文件的代码实例

    Java建立Zip压缩文件的代码实例 Java代码 import java.io.*; import java.util.zip.*; class Zip { public static void m ...

  5. java 模板生成PDF文件 复选框勾选

    java 模板生成PDF文件 复选框勾选 // pdf填充时要有第三个参数s.setField("A", On, true);

  6. java poi 生成excel_利用POI生成EXCEL文件的方法实例

    一.背景 Apache POI 是创建和维护操作各种符合Office Open XML(OOXML)标准和微软的OLE 2复合文档格式(OLE2)的Java API.用它可以使用Java读取和创建,修 ...

  7. 使用Cython库包对python的py文件(源码)进行加密,把python的.py文件生成.so文件并调用

    文章目录: 1 准备环境 2 调用`Cython库包`把python的`.py`文件生成`.so`文件 2.1 写源码文件 2.2 调用源码接口 2.3 调用Cython库把`.py`源码生成`.so ...

  8. java使用flex生成swf_flex动态生成矢量swf字体--java动态生成swf文件

    前言 相信很多在线设计的前端WEB应用会用到字体作为素材的案例,丰富多样的字体一般是部署在服务器端让用户去选择,而且能动态部署,使用客户端字体显然是不可取的: 现状 然而中文字体动不动就几个M,做过f ...

  9. python隐藏源码,生成pyd文件并调用的完整过程

    目录 ​pyd 特点及生成方式​ 首先需要在 ​demo.py 同目录下新建个 setup.py 文件,具体代码如下 在生成之前或许我们需要先做一个事情,那就是安装vs_buildtools 在命令行 ...

最新文章

  1. Bitbucket免费的私有仓库
  2. win7为什么没有计算机,教你win7如何快速找出电脑没声音问题所在-win7之家
  3. JAVA 内存泄露详解(原因、例子及解决)
  4. JAVA Socket实现多客户端聊天
  5. 【图像超分辨率论文】BasicVSR: The Search for Essential Components in Video Super-Resolution and Beyond
  6. 欲取代硬盘?SSD固态存储器前景分析
  7. 案例:控制文件序列号满故障处理和分析
  8. 特斯拉FED在美售价上调至1.2万美元 国内售价6.4万元
  9. C#链接各种数据库代码总结
  10. iOS build faad
  11. JAAS Authorization文档
  12. Dynamics CRM 365 - 零基础入门学习后端插件语法总结(样例使用方法)
  13. 免费url长网址缩短压缩工具评测,短链接在线生成器推荐。
  14. 一些.NET的开源项目资料
  15. TCP编程-端口扫描器
  16. 以前手机应用java咖啡_作为编程语言的“java”怎么就成了咖啡的代称?
  17. OSG开发笔记(二十五):OSG漫游之CS移动、碰撞检测与跳跃
  18. Element-Plus中日期时间选择器组件DateTimePicker默认显示英文的问题
  19. 怎么在苹果手机上进行时间管理?
  20. 【RF基础】RF调用python函数基础

热门文章

  1. matlab表格三维柱状图,excel制作四维数据表格-excel三维柱形图 ,请问如何根据excel表格中的数据......
  2. 基于信息熵确立权重的topsis法_基于信息熵和TOPSIS法的装备战场抢修排序决策模型...
  3. 素数在c语言中怎么表示,请问素数怎么样表示
  4. mysql索引数据结构图解_干货:mysql索引的数据结构
  5. java自动生成函数注释_IDEA类和方法注释自动生成(2019-08-31 21:47写)
  6. 堆积柱形图显示总数_在Excel堆积柱形图中显示合计值
  7. android 画圆角背景颜色,android圆角矩形有背景颜色
  8. 怎么判断子元素距离父元素顶部位置_css子元素如何相对父元素定位?
  9. 中文文本对齐_终于明白Word如何快速对齐姓名!为之前狂敲空格的我,留下一把泪...
  10. 大多数元素python_学Python必知的20个技巧,掌握它们,准没错