mirror of https://github.com/opencv/opencv.git
parent
9823b7cd08
commit
0f64f847b2
2 changed files with 83 additions and 12 deletions
@ -1,37 +1,108 @@ |
||||
#include "OpenCVLibraryInfo.h" |
||||
#include "EngineCommon.h" |
||||
#include <utils/Log.h> |
||||
#include <dlfcn.h> |
||||
|
||||
JNIEXPORT jlong JNICALL Java_org_opencv_engine_OpenCVLibraryInfo_open |
||||
(JNIEnv * env, jobject, jstring) |
||||
(JNIEnv * env, jobject, jstring str) |
||||
{ |
||||
return 255; |
||||
const char* infoLibPath = env->GetStringUTFChars(str, NULL); |
||||
if (infoLibPath == NULL) |
||||
return 0; |
||||
|
||||
LOGD("Trying to load info library \"%s\"", infoLibPath); |
||||
|
||||
void* handle; |
||||
|
||||
handle = dlopen(infoLibPath, RTLD_LAZY); |
||||
if (handle == NULL) |
||||
LOGI("Info library not found by path \"%s\"", infoLibPath); |
||||
|
||||
return (jlong)handle; |
||||
} |
||||
|
||||
JNIEXPORT jstring JNICALL Java_org_opencv_engine_OpenCVLibraryInfo_getPackageName |
||||
(JNIEnv* env, jobject, jlong) |
||||
(JNIEnv* env, jobject, jlong handle) |
||||
{ |
||||
return env->NewStringUTF("org.opencv.lib_v24_tegra3"); |
||||
const char* (*info_func)(); |
||||
const char* result; |
||||
const char* error; |
||||
|
||||
dlerror(); |
||||
*(void **) (&info_func) = dlsym((void*)handle, "GetPackageName"); |
||||
if ((error = dlerror()) == NULL) |
||||
result = (*info_func)(); |
||||
else |
||||
{ |
||||
LOGE("dlsym error: \"%s\"", error); |
||||
result = "unknown"; |
||||
} |
||||
|
||||
return env->NewStringUTF(result); |
||||
} |
||||
|
||||
JNIEXPORT jstring JNICALL Java_org_opencv_engine_OpenCVLibraryInfo_getPublicName |
||||
(JNIEnv* env, jobject, jlong) |
||||
{ |
||||
return env->NewStringUTF("OpenCV library for Tegra3"); |
||||
const char* (*info_func)(); |
||||
const char* result; |
||||
const char* error; |
||||
|
||||
dlerror(); |
||||
*(void **) (&info_func) = dlsym((void*)handle, "GetPublicName"); |
||||
if ((error = dlerror()) == NULL) |
||||
result = (*info_func)(); |
||||
else |
||||
{ |
||||
LOGE("dlsym error: \"%s\"", error); |
||||
result = "unknown"; |
||||
} |
||||
|
||||
return env->NewStringUTF(result); |
||||
} |
||||
|
||||
JNIEXPORT jstring JNICALL Java_org_opencv_engine_OpenCVLibraryInfo_getLibraryList |
||||
(JNIEnv* env, jobject, jlong) |
||||
(JNIEnv* env, jobject, jlong handle) |
||||
{ |
||||
return env->NewStringUTF(""); |
||||
const char* (*info_func)(); |
||||
const char* result; |
||||
const char* error; |
||||
|
||||
dlerror(); |
||||
*(void **) (&info_func) = dlsym((void*)handle, "GetLibraryList"); |
||||
if ((error = dlerror()) == NULL) |
||||
result = (*info_func)(); |
||||
else |
||||
{ |
||||
LOGE("dlsym error: \"%s\"", error); |
||||
result = "unknown"; |
||||
} |
||||
|
||||
return env->NewStringUTF(result); |
||||
} |
||||
|
||||
JNIEXPORT jstring JNICALL Java_org_opencv_engine_OpenCVLibraryInfo_getVersionName |
||||
(JNIEnv* env, jobject, jlong) |
||||
(JNIEnv* env, jobject, jlong handle) |
||||
{ |
||||
return env->NewStringUTF("9.9"); |
||||
const char* (*info_func)(); |
||||
const char* result; |
||||
const char* error; |
||||
|
||||
dlerror(); |
||||
*(void **) (&info_func) = dlsym((void*)handle, "GetRevision"); |
||||
if ((error = dlerror()) == NULL) |
||||
result = (*info_func)(); |
||||
else |
||||
{ |
||||
LOGE("dlsym error: \"%s\"", error); |
||||
result = "unknown"; |
||||
} |
||||
|
||||
return env->NewStringUTF(result); |
||||
} |
||||
|
||||
JNIEXPORT void JNICALL Java_org_opencv_engine_OpenCVLibraryInfo_close |
||||
(JNIEnv* env, jobject, jlong) |
||||
(JNIEnv*, jobject, jlong handle) |
||||
{ |
||||
|
||||
dlclose((void*)handle); |
||||
} |
||||
|
Loading…
Reference in new issue