当前位置:主页 » java能调用dll中的构造方法

java能调用dll中的构造方法

如题,介绍一下java如保调用dll中的构造方法,其实本质上就是在java上如何调用本地库的一种方式

需要准备的:

java

详细操作方法和步骤:

1、JNative 是一个jar包,对JNI进行了封装,可以允许java访问本地dll/so库的方法,可以百度搜索下载
2、JNA JNA是目前来说,最简单的一种调用方法,JNI是Java调用原生函数的唯一机制,JNA就是建立在JNI之上,JNA简化了Java调用原生函数的过程,可以百度搜索下载
3、JNI 最底层的实现方式,也是最麻烦的一种方式,令很多初学者头痛,但是了解jni的实现方式,有助于了解其它两种方式的实现过程,有兴趣的可以深入了解下
4、JNA的简单的实现方法 import com.sun.jna.Library;import com.sun.jna.Native;public class JnaTest {    //继承Library,用于加载库文件    public interface Clibrary extends Library{        //加载libhello.so链接库        Clibrary INSTANTCE = (Clibrary) Native.loadLibrary("hello", Clibrary.class);        //此方法为链接库中的方法        void test();    }    public static void main(String[] args) {//调用        Clibrary.INSTANTCE.test();    }}
5、JNI的简单的实现方法,新建一个android工程,目录如下图所示
6、JNI代码如下图所示 #include <jni.h> #include <string> extern "C" JNIEXPORT jstring JNICALL Java_com_wind_myapplication_MainActivity_stringFromJNI(         JNIEnv* env,         jobject /* this */) {     std::string hello = "Hello from C++";     return env->NewStringUTF(hello.c_str()); } 简单说一下,JNI的通信原理,主要是建立工程的时候,添加一个c或者c++的文件,里面添加本地函数,比如要调用dll的构造函数的功能,也是一样,主要是要注意方法名的写法,如 extern "C" JNIEXPORT jstring JNICALL Java_com_wind_myapplication_MainActivity_stringFromJNI 这个是有要求的,不能乱写,其实就是java的包名组成方法名就可以了,然后在java对应的类里,添加一个本地方法与该名称对应,然后加载这个DLL/so就可以了,在java方法里调用这个本地方法就会映射到jni里的方法了

需要注意的:

仅供个人学习参考,感谢阅读本经验,祝您生活愉快

请看图片示例:

java能调用dll中的构造方法

java能调用dll中的构造方法

java能调用dll中的构造方法

java能调用dll中的构造方法

java能调用dll中的构造方法

java能调用dll中的构造方法

java能调用dll中的构造方法

java能调用dll中的构造方法

java能调用dll中的构造方法

java能调用dll中的构造方法