diff --git a/CelluloUnity_Cellulo.cpp b/CelluloUnity_Cellulo.cpp new file mode 100644 index 0000000..ca0140a --- /dev/null +++ b/CelluloUnity_Cellulo.cpp @@ -0,0 +1,34 @@ +#include "CelluloUnity_Cellulo.h" +#include +#include + +jint load(JavaVM *vm, void *reserved, const char* so_file) { + jint (*that_jni_onload)(JavaVM *vm, void *reserved); + char *error; + + + void* handle = dlopen(so_file, RTLD_LAZY); + if (!handle) { + qDebug() << dlerror(); + exit(EXIT_FAILURE); + } + + *(void **) (&that_jni_onload) = dlsym(handle, "JNI_OnLoad"); + + if ((error = dlerror()) != NULL) { + qDebug() << error; + exit(EXIT_FAILURE); + } + + return (*that_jni_onload)(vm, reserved); +} + +jint JNI_OnLoad(JavaVM *vm, void *reserved) +{ + qDebug() << "Begin JNI_Onload()"; + jint res = load(vm, reserved, "libQt5Core.so"); + load(vm, reserved, "libQt5AndroidExtras.so"); + load(vm, reserved, "libQt5Bluetooth.so"); + qDebug() << "End JNI_Onload()"; + return res; +} diff --git a/CelluloUnity_Cellulo.h b/CelluloUnity_Cellulo.h new file mode 100644 index 0000000..294f9dc --- /dev/null +++ b/CelluloUnity_Cellulo.h @@ -0,0 +1,15 @@ +#include "/home/opt/android-ndk-r16b/sysroot/usr/include/jni.h" +/* Header for class CelluloUnity_Cellulo */ + +#ifndef _Included_CelluloUnity_Cellulo +#define _Included_CelluloUnity_Cellulo +#ifdef __cplusplus +extern "C" { +#endif + +JNIEXPORT jint JNI_OnLoad(JavaVM *vm, void *reserved); + +#ifdef __cplusplus +} +#endif +#endif