Java无法直接访问到操作系统底层(如系统硬件等),为此Java使用native方法来扩展Java程序的功能。
可以将native方法比作Java程序同C程序的接口,其实现步骤:
1、在Java中声明native()方法,然后编译;
2、用javah产生一个.h文件;
3、写一个.cpp文件实现native导出方法,其中需要包含第二步产生的.h文件(注意其中又包含了JDK带的jni.h文件);
4、将第三步的.cpp文件编译成动态链接库文件;
5、在Java中用System.loadLibrary()方法加载第四步产生的动态链接库文件,这个native()方法就可以在Java中被访问了。
例子:
public class VadChecker {
static {
System.loadLibrary("vadLib");
}
//other code here
// 动态链接库用到的函数需要declar
public static native int native_initialize();
public static native void native_uninitialize(int handle);
public static native void native_reset(int handle);
public static native int native_appendData(int handle, byte[] pData, int len, VadData vad);
public static native int native_setParam(int handle, int paramID, int paramValue);
}
在这个项目的Libs 目录下有一个文件.so 文件 -》 libs/armeabi/libvadLib.so
分享到:
相关推荐
java程序中加载动态链接库文件方法,涉及到C语言实现控制底层硬件的方法
Java调用动态链接库 Java 调用 DLL 源码
因此,很少有 Java 程序员愿意编写调用 dll/.so 库中的原生函数的 java 程序。这也使 Java 语言在客户端上乏善可陈。可以说 JNI 是 Java 的一大弱点!现在,不需要再羡慕 .NET 的 P/Invoke 机制了。 JNA 把对 dll/....
调用7z动态链接库,实现文件的解压、压缩功能,如zip\rar\iso\7z等格式,支持c#、JAVA等编程语言
详细演示了如何通过JNA实现以下形式的动态链接库接口: 1:基本数据类型 2:基本数据类型的指针和引用 3:结构体 4:结构体的指针和引用 5:函数指针和回调函数 6:字符串指针 7:输入一个数组 8:输出一个数组并...
Java通过JNI调用C++动态链接库(第三方库)实现全过程Demo 1、创建c++动态链接库,实现一些功能的封装,例如扫描设备,作为第三方库来使用 2、创建c++中间件(本质也是DLL),用来调用和进一步的封装第三方库,添加...
随着项目中动态链接库越来越多,我们也遇到了很多奇怪的问题,比如只在某一种OS上会出现的java.lang.UnsatisfiedLinkError,但是明明我们动态库名称没错,ABI也没错,方法也能对应的上,而且还只出现在某一些机型上...
金税组件接口dll动态链接库6.13, 直接添加引用调用
java调用C++写的动态链接库打开光驱
把执行java的命令行后面加上参数-agentlib:<动态链接库文件所在路径>\classloader 适应环境: 操作系统:所有操作系统,Windows系统、Linux/Unix,只是运行时, 使用的动态链接库文件不一样而已,其它配置完全一样...
亲测可用,java 成功调用dll函数。包含调用回调函数,springboot版本。最近由于公司业务需要,要调用dll文件,用JNA调用。
NULL 博文链接:https://cyj86.iteye.com/blog/1095213
把执行java的命令行后面加上参数-agentlib:<动态链接库文件所在路径>\classloader 适应环境: 操作系统:所有操作系统,Windows系统、Linux/Unix,只是运行时, 使用的动态链接库文件不一样而已,其它配置完全一样...
util实现Java图片水印添加功能,有添加图片水印和文字水印,可以设置水印位置,透明度、设置对线段锯齿状边缘处理、水印图片的路径,水印一般格式是gif,png,这种图片可以设置透明度、水印旋转等,可以参考代码...
util实现Java图片水印添加功能,有添加图片水印和文字水印,可以设置水印位置,透明度、设置对线段锯齿状边缘处理、水印图片的路径,水印一般格式是gif,png,这种图片可以设置透明度、水印旋转等,可以参考代码...
这个可能没有想象中的那么好用,无法加载dll动态链接库时 需要自行修改加载路径 更新后的文件下载地址:https://download.csdn.net/download/qq_41054313/11140869 优化了加载dll库路径兼容问题
Windows使用动态链接库(Dynamic Link Library)的方式加载本机库文件,而Linux使用共享对象(Shared Object)的方式加载本机库文件。 因此,为了在不同的操作系统上使用OpenCV,你需要使用相应操作系统的
parboiled 是一个纯Java库提供了一种轻量级,易于使用,功能强大和优雅的PEG(解析表达式语法)分析设施。你定义的Java源代码的语法规则,直接,没有必要专门编写和维护,外部语法文件。同时保持蒸提供全面的支持,...