如何把JAVA工程 编译成.SO文件

Python016

如何把JAVA工程 编译成.SO文件,第1张

1,写一个java文件,声明一个native 方法,例如public native void test()2,把它编译成class文件 3,使用javah 这个class来生成cpp的头文件 4,实现头文件里面那些函数 4,用ndk编译生成动态库 其中1,想生成几个就写几个native方法。

引入jna.jar包。 然后写一个接口类继承Library来和.so(linux平台)或.dll(windows平台)文件交互。接口中对应的方法为so中的方法,大小写都需要完全一致,同时参数类型也需要注意,jna和so中的参数类型的对应转换。

以下是代码是大概例子,你可以看一下,是有参数的对应格式的。其中,Native.loadLibrary为加载链接库文件。

public interface LibVlc extends Library {

    Info INFO = Info.getInstance()

    LibVlc INSTANCE = (LibVlc)Native.loadLibrary(RuntimeUtil.getLibVlcLibraryName(), LibVlc.class)

    LibVlc SYNC_INSTANCE = (LibVlc)Native.synchronizedLibrary(INSTANCE)

    String libvlc_errmsg()

    void libvlc_clearerr()

  

    libvlc_instance_t libvlc_new(int argc, String[] argv)

}