我正在使用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()?
感谢您的帮助!