#include <dlfcn.h> | |
#include <jni.h> | |
#include <string> | |
extern "C" { | |
JNIEXPORT jlong JNICALL | |
Java_com_google_vr_platform_Dvr_nativeLoadLibrary( | |
JNIEnv* env, jclass, jstring java_library) { | |
if (!java_library) | |
return 0; | |
// Convert the Java String object to a C++ null-terminated string. | |
const char* data = env->GetStringUTFChars(java_library, NULL); | |
size_t size = env->GetStringUTFLength(java_library); | |
std::string library(data, size); | |
env->ReleaseStringUTFChars(java_library, data); | |
// Return the handle to the requested library. | |
return reinterpret_cast<jlong>( | |
dlopen(library.c_str(), RTLD_NOW | RTLD_LOCAL)); | |
} | |
} // extern "C" |