Missing link to libjpeg.so in jni / ndk shared library

Heya, I had a problem creating the shared ndk / jni library that I developed. I hope to reuse libjpeg, which comes with the platform (/system/lib/libjpeg.so), but I cannot get it to link. When I create my shared library, I get ...

/home/blink/workspace_android2/HackBitmapJNI/jni/jnijpeg/JNIBmp.cpp:94: undefined reference to `jpeg_std_error(jpeg_error_mgr*)'
/home/blink/workspace_android2/HackBitmapJNI/jni/jnijpeg/JNIBmp.cpp:96: undefined reference to `jpeg_CreateDecompress(jpeg_decompress_struct*, int, unsigned int)'
/home/blink/workspace_android2/HackBitmapJNI/jni/jnijpeg/JNIBmp.cpp:98: undefined reference to `jpeg_stdio_src(jpeg_decompress_struct*, __sFILE*)'
/home/blink/workspace_android2/HackBitmapJNI/jni/jnijpeg/JNIBmp.cpp:100: undefined reference to `jpeg_read_header(jpeg_decompress_struct*, int)'
/home/blink/workspace_android2/HackBitmapJNI/jni/jnijpeg/JNIBmp.cpp:102: undefined reference to `jpeg_start_decompress(jpeg_decompress_struct*)'
/home/blink/workspace_android2/HackBitmapJNI/jni/jnijpeg/JNIBmp.cpp:124: undefined reference to `jpeg_read_scanlines(jpeg_decompress_struct*, unsigned char**, unsigned int)'
/home/blink/workspace_android2/HackBitmapJNI/jni/jnijpeg/JNIBmp.cpp:130: undefined reference to `jpeg_destroy_decompress(jpeg_decompress_struct*)'
collect2: ld returned 1 exit status
make: *** [/home/blink/workspace_android2/HackBitmapJNI/obj/local/armeabi/libjnijpeg.so] Error 1*

This is essentially every character that I will need to solve from libjpeg.so at runtime ...

I copied libjpeg.so from my emulator and into my project directory in the "lib" section. When I run "arm-eabi-readelf -s" on this copy of libjpeg.so, I can see all the above characters (I don’t see method signatures .. just names .. is there a way to reset signatures / Namespaces ??)

My Android.mk looks like this:

LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)
LOCAL_C_INCLUDES := /opt/android_src/dalvik/libnativehelper/include/nativehelper \
                    /opt/android_src/frameworks/base/include \
                    /opt/android_src/system/core/include \
                    /opt/android_src/dalvik/libnativehelper/include \
                    /opt/android_src/external/stlport/stlport \
                    /opt/android_src/external/jpeg \
                    /opt/android_src/bionic
LOCAL_LDFLAGS += -Llib 
LOCAL_MODULE    := jnijpeg
LOCAL_SRC_FILES := JNIBmp.cpp 
LOCAL_LDLIBS    := -lm -llog -ljpeg -landroid_runtime 


include $(BUILD_SHARED_LIBRARY) 

!

+3
2

#include :

extern "C" {
#include "jpeglib.h"
}

.

!

+2

-ljpeg, :

LOCAL_LDLIBS: = -L $(MYDROID)/out/target/product/generic/system/lib/-ljpeg

+1

Source: https://habr.com/ru/post/1796591/


All Articles