202109-16 详解JNI到底是什么 目录一、前言二、准备java代码三、生成头文件四、gcc环境安装五、生成动态链接库六、总结一、前言首先回顾一下jni的主要功能,从jdk1.1开始jni标准就成为了java平台的一部分,它提供的一系列的API允许java和其他语言进行交互,实现了在java代码中调用其他语言的函数。通过jni的调用,能够实现这些功能:通常情况下我们一般使用jni用来调用c或c++中的代码,在上一篇文章中我们用了下面的流程来描述了native方法的调用过程:JavaCod... 继续阅读 >
202108-11 详解Java Socket通信封装MIna框架 目录核心类各个击破IoServiceIoFilterIoHandler总结核心类IoService:Mina中将服务端和客户端都看成是服务,这里提供统一接口IoService,这个接口的作用就是用来处理套接字机制。也正是IoService来监听消息返回消息这些步骤,可以说IoService就是我们Mina中核心IoProcessor:这个接口在另一个线程上,负责检查是否有数据在通道上读写,也就是说它也拥有自己的Selector,这是与我们使用JAVANIO编码时的一个不同之处,通常在JAVANIO... 继续阅读 >
202104-27 Android Studio 3.5版本JNI生成SO文件详解 学习在于记录,把自己不懂得容易忘记得记录下,才是最好得选择。废话不多说,想要在Android开发中嵌入c/c++代码,直接开始如下步骤1、创建需要调用的Java类在你某个指定的包下创建如下类packagecom.journey.org;publicclassJniHello{static{System.loadLibrary("JniHello")}publicstaticnativeStringwelcomeJniStudy();}2、创建通用工具首先选择File->Settings->Tools->ExternalTools具体如下... 继续阅读 >
202011-25 解决Java 部署Tomcat时使用jni和jna调用DLL文件的问题 我的前一篇博客提到,我们公司项目的restful框架中要用到底层的DLLC++库,最后经过测试验证结果选择采用JNA方法来调DLL库。之后基础框架在IDEA中的jetty服务中调试成功,但是在部署到Tomcat上时出现了无法加载DLL库的状况,只能现学现卖了。一.把DLL文件放在Tomcat下的方法:在Tomcat中加载dll,供其它接口调用:在Tomcat目录根下新建一个文件夹,这里就叫DLL吧,<tomcat_home>/DLL;把需要用到的dll放入新建的DLL目录下;编辑<t... 继续阅读 >
202011-25 Java通过JNI 调用动态链接库DLL操作 JNI(JavaNativeInterface)Java本地接口,主要作用是实现java代码与C、C++编写的代码交互。在Android编程中,so库的访问也用到了jni技术。理论多说无益,还是看java连接dll的实战吧。如下:例:java中调用demo.dll文件中的hello()方法。1、java1)装载dll文件有两种方式System.load();和System.loadLibrary();load需要全路径且需要有文件扩展名;loadLibrary是特定路径,系统system32下或项目bin目录下,只要文件名称不要.dll扩... 继续阅读 >
202009-24 基于Android studio3.6的JNI教程之ncnn之语义分割ENet 代码链接:https://github.com/watersink/enet-as-linux本代码可以在模拟器下进行跑。环境:Androidstudio3.6Sdk:android10api29Ndk:r15cNcnn:20200226Opencv:Opencv3.4.1androidsdkLinux下的代码测试:mkdirbuildcdbuildcmake..make./enet运行效果,Android开始:(1)新建工程,New->NewProject->选择Nativec++ ->工程名enet->c++11(2)app/src/cpp下面增加opencv和ncnn的头文件,include(3)app/src/mai... 继续阅读 >
202009-24 基于Android studio3.6的JNI教程之helloworld思路详解 jdk环境变量配置:path中增加下面2个路径,也就是androidstudio的路径,android有自带的jdk。E:\Android\AndroidStudio\jre\binE:\Android\AndroidStudio\bin新建工程:一定要选择Nativec++类型,最后要选c++11支持。SDK设置:File->SettingsFile->ProjectStructure首先确定工程的目录结构,然后尝试运行一下工程,使用模拟器,确保工程没问题,在MainActivity的同级目录,新建一个hello.java,然后做一个简单的实现,package... 继续阅读 >