Andernfalls link gegen die libjpeg.so in jni/ndk shared library
Heya,
Ich habe Probleme beim Aufbau einer ndk/jni shared-library, die ich entwickelt habe. Ich bin der Hoffnung, dass die Wiederverwendung der libjpeg, welche Schiffe mit der Plattform/system/lib/libjpeg.so) aber ich kann es nicht verknüpfen. Wenn ich bauen meine geteilte Bibliothek, die ich bekommen...
/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*
Denen im wesentlichen alle Symbole, die ich würde lösen müssen, aus der libjpeg.also bei runtime...
Habe ich kopiert libjpeg.also aus meiner emulator und in mein Projekt-Verzeichnis unter 'lib'. Wenn ich "arm-eabi-readelf -s' auf das kopieren von libjpeg.damit ich sehen kann, alle der oben genannten Symbole definiert (ich kann nicht sehen, Signaturen.. nur Namen.. gibt es eine Möglichkeit die dump-Signaturen/namespaces??)
Meinem Android.mk ist wie folgt...
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)
Danken Ihnen sehr für jede Hilfe!!!
- Ich kann nicht finden, libjpeg.also im SDK oder NDK-Verzeichnis. Wo liegt es genau? Ich würde versuchen, indem die ".so" - Datei in den entsprechenden \ndk\build\platforms\<android-Version>\arch-arm\usr\lib-Verzeichnis. das Projekt\libs ist wahrscheinlich nur für die java-build-system.
- haben Sie Ihre Antwort oder nicht? Da bekam ich auch solche Fehler.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Versuchen, verwenden Sie #include, in dieser form:
Es funktionierte für mich.
Glück!
War ich in der Lage, gegen -ljpeg mit den folgenden:
LOCAL_LDLIBS := -L$(MYDROID)/out/target/product/generic/system/lib/-ljpeg
/system/lib/libjpeg.so
gezogen werden kann, von einem emulator oder auf einem Gerät mit kompatiblen ABI.