Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Unsatisfied link error #24

Closed
abhilashi opened this issue Oct 21, 2016 · 7 comments
Closed

Unsatisfied link error #24

abhilashi opened this issue Oct 21, 2016 · 7 comments

Comments

@abhilashi
Copy link

abhilashi commented Oct 21, 2016

The default "libpeople_det.so" included in the repo works. But when I build it locally on my machine I end up with UnsatisfiedLinkError.

OS: mac OS sierra
ndk version: android-ndk-r12b

10-21 17:28:33.561 25557-25679/com.tzutalin.dlibtest E/art: No implementation found for void com.tzutalin.dlibtest.ImageUtils.convertYUV420ToARGB8888(byte[], byte[], byte[], int[], int, int, int, int, int, boolean) (tried Java_com_tzutalin_dlibtest_ImageUtils_convertYUV420ToARGB8888 and Java_com_tzutalin_dlibtest_ImageUtils_convertYUV420ToARGB8888___3B_3B_3B_3IIIIIIZ)
10-21 17:28:33.571 25557-25679/com.tzutalin.dlibtest E/AndroidRuntime: FATAL EXCEPTION: ImageListener
                                                                       Process: com.tzutalin.dlibtest, PID: 25557
                                                                       java.lang.UnsatisfiedLinkError: No implementation found for void com.tzutalin.dlibtest.ImageUtils.convertYUV420ToARGB8888(byte[], byte[], byte[], int[], int, int, int, int, int, boolean) (tried Java_com_tzutalin_dlibtest_ImageUtils_convertYUV420ToARGB8888 and Java_com_tzutalin_dlibtest_ImageUtils_convertYUV420ToARGB8888___3B_3B_3B_3IIIIIIZ)
                                                                           at com.tzutalin.dlibtest.ImageUtils.convertYUV420ToARGB8888(Native Method)
                                                                           at com.tzutalin.dlibtest.OnGetImageListener.onImageAvailable(OnGetImageListener.java:193)
                                                                           at android.media.ImageReader$ListenerHandler.handleMessage(ImageReader.java:648)
                                                                           at android.os.Handler.dispatchMessage(Handler.java:102)
                                                                           at android.os.Looper.loop(Looper.java:148)
                                                                           at android.os.HandlerThread.run(HandlerThread.java:61)

Another log:

10-21 18:33:59.178 20989-21373/com.tzutalin.dlibtest E/art: No implementation found for int com.tzutalin.dlib.PeopleDet.jniOpencvHOGDetect(java.lang.String) (tried Java_com_tzutalin_dlib_PeopleDet_jniOpencvHOGDetect and Java_com_tzutalin_dlib_PeopleDet_jniOpencvHOGDetect__Ljava_lang_String_2)
10-21 18:33:59.183 20989-21373/com.tzutalin.dlibtest E/AndroidRuntime: FATAL EXCEPTION: pool-1-thread-1
                                                                       Process: com.tzutalin.dlibtest, PID: 20989
                                                                       java.lang.UnsatisfiedLinkError: No implementation found for int com.tzutalin.dlib.PeopleDet.jniOpencvHOGDetect(java.lang.String) (tried Java_com_tzutalin_dlib_PeopleDet_jniOpencvHOGDetect and Java_com_tzutalin_dlib_PeopleDet_jniOpencvHOGDetect__Ljava_lang_String_2)
                                                                           at com.tzutalin.dlib.PeopleDet.jniOpencvHOGDetect(Native Method)
                                                                           at com.tzutalin.dlib.PeopleDet.detPerson(PeopleDet.java:56)
                                                                           at com.tzutalin.dlibtest.MainActivity.runDetectAsync(MainActivity.java:236)
                                                                           at com.tzutalin.dlibtest.MainActivity_.access$301(MainActivity_.java:32)
                                                                           at com.tzutalin.dlibtest.MainActivity_$6.execute(MainActivity_.java:156)
                                                                           at org.androidannotations.api.BackgroundExecutor$Task.run(BackgroundExecutor.java:405)
                                                                           at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:423)
                                                                           at java.util.concurrent.FutureTask.run(FutureTask.java:237)
                                                                           at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:269)
                                                                           at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1113)
                                                                           at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:588)
                                                                           at java.lang.Thread.run(Thread.java:818)

Steps to reproduce:

Any pointers on where I should look next? ( I haven't changed anything in the repo. Just ran an ndk-build after cloning the repo.)

@tzutalin
Copy link
Owner

tzutalin commented Oct 21, 2016

Hi,
Do you use the latest version? Could you try to call ./envsetup and build again?

I think the root cause is that I forget to sync the submodule, dlib-android-app.

@abhilashi
Copy link
Author

@tzutalin I just tried with the latest by doing the following:

git pull
./envsetup

It is still the same. Anything else I could try?

@abhilashi
Copy link
Author

I just peeked into the symbols. These methods indeed exist in the file: "libpeople_det.so".

saadhana@Abhilashs-MacBook-Air-4 ~/dlib-android(master) $ ~/Downloads/android-ndk-r13/toolchains/arm-linux-androideabi-4.9/prebuilt/darwin-x86_64/bin/arm-linux-androideabi-readelf -Ws dlib-android-app/dlib/src/main/jniLibs/armeabi-v7a/libpeople_det.so  | awk '{print $8}' | grep "Java_com_tzutalin"
Java_com_tzutalin_dlib_PeopleDet_jniNativeClassInit
Java_com_tzutalin_dlib_PeopleDet_jniOpencvHOGDetect
Java_com_tzutalin_dlib_PeopleDet_jniGetOpecvHOGRet
Java_com_tzutalin_dlib_PeopleDet_jniDLibHOGDetect
Java_com_tzutalin_dlib_PeopleDet_jniGetDLibHOGRet
Java_com_tzutalin_dlib_PeopleDet_jniDLibHOGFaceDetect
Java_com_tzutalin_dlib_PeopleDet_jniBitmapFaceDect
Java_com_tzutalin_dlib_PeopleDet_jniGetDLibHOGFaceRet
Java_com_tzutalin_dlib_PeopleDet_jniInit
Java_com_tzutalin_dlib_PeopleDet_jniDeInit
Java_com_tzutalin_dlib_FaceDet_jniNativeClassInit
Java_com_tzutalin_dlib_FaceDet_jniFaceLandmarkDet
Java_com_tzutalin_dlib_FaceDet_jniBitmapFaceLandmarkDet
Java_com_tzutalin_dlib_FaceDet_jniFaceDet
Java_com_tzutalin_dlib_FaceDet_jniBitmapFaceDet
Java_com_tzutalin_dlib_FaceDet_jniInit
Java_com_tzutalin_dlib_FaceDet_jniDeInit
Java_com_tzutalin_dlibtest_ImageUtils_convertYUV420SPToARGB8888
Java_com_tzutalin_dlibtest_ImageUtils_convertYUV420ToARGB8888
Java_com_tzutalin_dlibtest_ImageUtils_convertYUV420SPToRGB565
Java_com_tzutalin_dlibtest_ImageUtils_convertARGB8888ToYUV420SP
Java_com_tzutalin_dlibtest_ImageUtils_convertRGB565ToYUV420SP
saadhana@Abhilashs-MacBook-Air-4 ~/dlib-android(master) $ 

I went back the dlib-android-app and I found the issue to be the following.

10-21 23:58:22.571 26250-26883/com.tzutalin.dlibtest D/PeopleDet: library not found!

This is happening only when I build it locally :(

@abhilashi
Copy link
Author

abhilashi commented Oct 21, 2016

@abhilashi
Copy link
Author

abhilashi commented Oct 21, 2016

In our case both compileSdkVersion and targetSdkVersion are same. Even my device is Android 6 (23).

It worked when I changed APP_PLATFORM parameter.

My Application.mk looks like this:

 NDK_TOOLCHAIN_VERSION := clang
 APP_ABI := armeabi-v7a arm64-v8a x86 x86_64
 APP_CPPFLAGS := -std=c++11 -frtti -fexceptions
 APP_PLATFORM := android-21
 APP_STL := gnustl_static

Yet to figure out why this worked :)

@tzutalin
Copy link
Owner

@abhilashi ,
Good.

@Jiradet-M
Copy link

I find error
2021-01-07 16:27:48.736 8919-8966/com.example.adasplus E/xample.adasplu: No implementation found for void com.example.adasplus.ImageUtils.convertYUV420ToARGB8888(byte[], byte[], byte[], int[], int, int, int, int, int, boolean) (tried Java_com_example_adasplus_ImageUtils_convertYUV420ToARGB8888 and Java_com_example_adasplus_ImageUtils_convertYUV420ToARGB8888___3B_3B_3B_3IIIIIIZ)
2021-01-07 16:27:48.739 8919-8966/com.example.adasplus E/AndroidRuntime: FATAL EXCEPTION: ImageListener
Process: com.example.adasplus, PID: 8919
java.lang.UnsatisfiedLinkError: No implementation found for void com.example.adasplus.ImageUtils.convertYUV420ToARGB8888(byte[], byte[], byte[], int[], int, int, int, int, int, boolean) (tried Java_com_example_adasplus_ImageUtils_convertYUV420ToARGB8888 and Java_com_example_adasplus_ImageUtils_convertYUV420ToARGB8888___3B_3B_3B_3IIIIIIZ)
at com.example.adasplus.ImageUtils.convertYUV420ToARGB8888(Native Method)
at com.example.adasplus.OnGetImageListener.onImageAvailable(OnGetImageListener.java:210)
at android.media.ImageReader$ListenerHandler.handleMessage(ImageReader.java:800)
at android.os.Handler.dispatchMessage(Handler.java:106)
at android.os.Looper.loop(Looper.java:201)
at android.os.HandlerThread.run(HandlerThread.java:65)
2021-01-07 16:27:48.773 8919-8919/com.example.adasplus V/CameraConnectionFragment: ⇢ closeCamera()
2021-01-07 16:27:50.127 8919-8919/com.example.adasplus W/Binder:8919_1: type=1400 audit(0.0:122794): avc: denied { read } for name="u:object_r:vendor_camera_prop:s0" dev="tmpfs" ino=21066 scontext=u:r:untrusted_app:s0:c179,c256,c512,c768 tcontext=u:object_r:vendor_camera_prop:s0 tclass=file permissive=0
2021-01-07 16:27:50.135 8919-8933/com.example.adasplus E/libc: Access denied finding property "vendor.camera.aux.packagelist"
2021-01-07 16:27:50.135 8919-8933/com.example.adasplus E/libc: Access denied finding property "vendor.camera.aux.packagelist.ext"
2021-01-07 16:27:50.139 8919-8919/com.example.adasplus I/native: I/jni_face_det.cpp:153 jniDeInit
2021-01-07 16:27:50.139 8919-9025/com.example.adasplus W/xample.adasplu: Long monitor contention with owner main (8919) at boolean android.os.BinderProxy.transactNative(int, android.os.Parcel, android.os.Parcel, int)(BinderProxy.java:-2) waiters=0 in void android.hardware.camera2.impl.CameraDeviceImpl$CameraDeviceCallbacks.onCaptureStarted(android.hardware.camera2.impl.CaptureResultExtras, long) for 1.329s
2021-01-07 16:27:50.168 8919-8919/com.example.adasplus V/CameraConnectionFragment: ⇠ closeCamera [1394ms]
2021-01-07 16:27:50.168 8919-8919/com.example.adasplus V/CameraConnectionFragment: ⇢ stopBackgroundThread()

i set dlib in new project

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants