parent
9823b7cd08
commit
0f64f847b2
2 changed files with 83 additions and 12 deletions
@ -1,37 +1,108 @@ |
|||||||
#include "OpenCVLibraryInfo.h" |
#include "OpenCVLibraryInfo.h" |
||||||
|
#include "EngineCommon.h" |
||||||
|
#include <utils/Log.h> |
||||||
|
#include <dlfcn.h> |
||||||
|
|
||||||
JNIEXPORT jlong JNICALL Java_org_opencv_engine_OpenCVLibraryInfo_open |
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 |
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 |
JNIEXPORT jstring JNICALL Java_org_opencv_engine_OpenCVLibraryInfo_getPublicName |
||||||
(JNIEnv* env, jobject, jlong) |
(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 |
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 |
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 |
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