如何使用外部.so

时间:2018-04-16 11:33:33

标签: android kotlin

我正在使用Android Studio在Kotlin开发一个简单的Android应用程序。 我有一个用C ++编写的外部.so文件,我没有这个.so的源代码,但我有头文件.h。

我的问题是我无法访问.so中包含的功能。我正在阅读很多关于此的主题,但我无法使其发挥作用。

基本上我想使用.so:init()和getVersion()中的2个函数。问题是init()函数需要2个参数,我不清楚如何在Kotlin中声明:

//This is the .h in C++
typedef void (*AttachCurrentThreadToJNI)();
typedef void (*DetachCurrentThreadToJNI)();

sint32 init(char *myID, AttachCurrentThreadToJNI attach, DetachCurrentThreadToJNI detach);
sint32 getVersion(void);

在Kotlin中,我以这种方式加载库:

//This is the Kotlin code
override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.activity_main)

    System.loadLibrary("myExternalLibrary");

加载库后,如何从我的.so文件中访问函数init()和getVersion()?

感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

应该与Java中的here完全相同。 确保从配套对象加载库。