Info library loading implemeneted.
This commit is contained in:
parent
9823b7cd08
commit
0f64f847b2
@ -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);
|
||||||
}
|
}
|
||||||
|
@ -2,7 +2,7 @@ package org.opencv.engine;
|
|||||||
|
|
||||||
public class OpenCVLibraryInfo {
|
public class OpenCVLibraryInfo {
|
||||||
public OpenCVLibraryInfo(String packagePath) {
|
public OpenCVLibraryInfo(String packagePath) {
|
||||||
mNativeObj = open(packagePath);
|
mNativeObj = open(packagePath + "/libopencv_info.so");
|
||||||
if (mNativeObj != 0) {
|
if (mNativeObj != 0) {
|
||||||
mPackageName = getPackageName(mNativeObj);
|
mPackageName = getPackageName(mNativeObj);
|
||||||
mLibraryList = getLibraryList(mNativeObj);
|
mLibraryList = getLibraryList(mNativeObj);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user