上篇介绍了在andriod上快速搭建深度学习模型,本篇粗略介绍下JNI

JNI是Java Native Interface的缩写,它提供了若干的API实现了Java和其他语言的通信(主要是C&C++).这是百度百科上说的.通俗来说,就是JAVA调用C/C++函数的接口.如果你要想调用C系列的函数,你就必须遵守这样的约定.

比如在C:\Users\Javis\Desktop\jni\下有个java文件需调用一个返回值为字符串的C++函数

public  class NativeDemo {//C++待生成的动态链接库,先挖个坑static{System.load("C:\\Users\\Javis\\Desktop\\jni\\NativeDemo.dll");}//待调用的C++函数,先挖个坑public native String sayHello();public static void main(String[] args) {NativeDemo demo=new NativeDemo();System.out.println(demo.sayHello());}
}

使用下面的java命令自动生成待调用的C++头文件

javac -encoding utf-8  NativeDemo.java
javah NativeDemo

生成的NativeDemo.h文件如下

/* DO NOT EDIT THIS FILE - it is machine generated */
#include <jni.h>
/* Header for class NativeDemo */#ifndef _Included_NativeDemo
#define _Included_NativeDemo
#ifdef __cplusplus
extern "C" {#endif
/** Class:     NativeDemo* Method:    sayHello* Signature: ()Ljava/lang/String;*/
JNIEXPORT jstring JNICALL Java_NativeDemo_sayHello(JNIEnv *, jobject);#ifdef __cplusplus
}
#endif
#endif

定义一个cpp文件实现Java_NativeDemo_sayHello这个函数

#include "NativeDemo.h"JNIEXPORT jstring JNICALL Java_NativeDemo_sayHello(JNIEnv* env, jobject job){return env->NewStringUTF("hello javis");
}

编译生成动态链接库NativeDemo.dll (jni.h需添加2个头文件目录,注意修改成自己的jdk目录)

g++  -shared  -I "C:\Program Files\Java\jdk1.8.0_91\include" -I "C:\Program Files\Java\jdk1.8.0_91\include\win32"  -o NativeDemo.dll  NativeDemo.cpp

重新编译java文件

javac -encoding utf-8  NativeDemo.java

运行结果

C:\Users\Javis\Desktop\jni>java NativeDemo
hello javis

参考链接:
https://blog.csdn.net/dmw412724/article/details/81477546
https://www.jianshu.com/p/6cbdda111570

ncnn笔记:02)ncnn之JNI入门初窥相关推荐

  1. 鸿蒙应用开发培训笔记02:应用开发入门

    文章目录 零.本讲学习目标 一.应用开发概述 (一)鸿蒙应用开发定位 (二)应用开发学习路线 (三)应用开发实例 - 小鸿网课 二.搭建鸿蒙集成开发环境 - DevEco Studio 2.1 (一) ...

  2. TensorFlow学习笔记02:TensorBoard可视化入门

    文章目录 一.TensorBoard概述 二.启动TensorBoard 1.打开Anaconda Prompt窗口

  3. MyBatis-学习笔记02【02.Mybatis入门案例】

    Java后端 学习路线 笔记汇总表[黑马程序员] MyBatis-学习笔记01[01.Mybatis课程介绍及环境搭建][day01] MyBatis-学习笔记02[02.Mybatis入门案例] M ...

  4. Unity 入门笔记 - 02 - 各种动画

    Unity 入门笔记 - 02 - 各种动画 前言:上一篇笔记记录了从零开始安装软件,到搭建最基本的游戏场景和角色,最后开始接触了脚本代码.对unity游戏引擎的工作方式有了基本的认知.接下来开始进一 ...

  5. STM32入门笔记(02):定时器之定时器中断、输入捕获和PWM输出(SPL库函数版)

    目录 定时器 8个定时器 定时器功能 定时器中断 常用通用定时器的寄存器 定时器中断实验目的: 定时器库函数及步骤 实验程序讲解 PWM 简介 STM32 PWM工作过程 PWM模式1 与 PWM模式 ...

  6. 尚硅谷大数据技术Hadoop教程-笔记02【Hadoop-入门】

    视频地址:尚硅谷大数据Hadoop教程(Hadoop 3.x安装搭建到集群调优) 尚硅谷大数据技术Hadoop教程-笔记01[大数据概论] 尚硅谷大数据技术Hadoop教程-笔记02[Hadoop-入 ...

  7. 大数据Hadoop教程-学习笔记02【Apache Hadoop、HDFS】

    视频教程:哔哩哔哩网站:黑马大数据Hadoop入门视频教程 教程资源:https://pan.baidu.com/s/1WYgyI3KgbzKzFD639lA-_g 提取码: 6666 [P001-P ...

  8. Filter和Listener-学习笔记02【Filter细节】

    Java后端 学习路线 笔记汇总表[黑马程序员] Filter和Listener-学习笔记01[Filter快速入门] Filter和Listener-学习笔记02[Filter细节] Filter和 ...

  9. Filter和Listener-学习笔记01【Filter 快速入门】

    Java后端 学习路线 笔记汇总表[黑马程序员] Filter和Listener-学习笔记01[Filter快速入门] Filter和Listener-学习笔记02[Filter细节] Filter和 ...

  10. Cookie和Session-学习笔记03【Session快速入门、Session细节】

    Java后端 学习路线 笔记汇总表[黑马程序员] Cookie和Session-学习笔记01[Cookie_快速入门.Cookie_细节] Cookie和Session-学习笔记02[Cookie案例 ...

最新文章

  1. 2021年夏天找SAP新项目的几点感想
  2. sigmastarSSD201/SSD202 github上开源了!
  3. 小程序动画从头开始_渐进式Web应用程序102:从头开始构建渐进式Web应用程序
  4. 设计包含min函数的栈,O(1)空间实现方法
  5. python记录(4)- lxml模块创建xml文件
  6. Axure企业官网通用模板web端+公司官网通用模板web端高保真原型+服务企业门户官网+加入我们+在线招聘+企业宣传+新闻动态+企业理念+产品与服务+公司通用版官方电脑端门户网站
  7. VS2008 Web Application和Web Site的区别[转]
  8. Android开发笔记(六十八)工程库打包
  9. 分享:从功能增强说起
  10. 一、1.kaggel简街市场预测—baseline代码解析
  11. python实现常见的整数进制、字符进制、ASCII码进制之间的转换
  12. Linux内核驱动之主次编号
  13. Atitit.软件开发的几大规则,法则,与原则Principle v3
  14. 编码的奥秘:电筒密谈
  15. CoderHelper 是怎样实现添加模块信息以及函数说明信息的?
  16. Crackme#1算法注册机
  17. webscraper多页爬取_webscraper的常见爬取问题
  18. Derby 和 Geronimo 使用感觉
  19. 如何进行自媒体创业?你是否能把握住,短视频都有哪些变现方式?
  20. git文件共享_与Git共享文件

热门文章

  1. chrome离线安装包的稳定下载方法
  2. python中常见函数总结
  3. 2017全国计算机二级office题库,2017年计算机二级office题库(附答案)
  4. 通达OA 商务平台OA2017新版本简易评测(图文)
  5. 【windows】使用键盘代替鼠标的快捷键
  6. python圣经是哪本_我的圣经:17年前的那本《Python 2.1 宝典》
  7. 鼠标测试软件m,[论坛]魔技无线激光鼠标测试心得(二)
  8. (八)、MultipartFile
  9. SECS/GEM封装库金南瓜平台(一)简介
  10. python MySQL操作(增删改查)