开发者

Unsatisfied Link Error - Could not find Library

I'm attempting to load the libjnigraphics.so prebuilt library to my project, however when I deploy the application, I am receiving this error:

06-17 22:35:28.741: INFO/dalvikvm(298): Unable to dlopen(/data/data/com.foo/lib/libndkfoo.so): Cannot load library: link_image[1721]:    29 could not load needed library 'libjnigraphics.so' for 'libndkfoo.so' (load_library[1051]: Library 'libjnigraphics.so' not found)

Unsatisfied Link Error - Could not find Library

It compiles perfectly, fine.

Here's my Android.mk as well:

LOCAL_PATH := $(call my-dir)

# Add prebuilt libjnigraphics
include $(CLEAR_VARS)

LOCAL_MODULE := libjnigraphics
LOCAL_SRC_FILES := libjnigraphics.so
LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH)/include

include $(PREBUILT_SHARED_LIBRARY)


include $(CLEAR_VARS)

# Here we give our module name and sour开发者_如何学编程ce file(s)
LOCAL_MODULE    := ndkfoo
LOCAL_SRC_FILES := ndkfoo.c
LOCAL_SHARED_LIBRARY := libjnigraphics
#LOCAL_LDLIBS += -libjnigraphics
LOCAL_LDLIBS += -llog

include $(BUILD_SHARED_LIBRARY)

Is there a special place I need to put the libjnigraphics.so? Right now I have it in the jni folder, however I've tried it in multiple other places and it still fails. Any help?


The device has to be running Foyo (Android 2.2, target platform android-8) to be able to use libjnigraphics.so. It doesn't matter what is in your SDK or project directories, this library is part of the device's system libraries.

You can compile your code using the NDK with android-8, but then it will give link-time errors when you side-load the apk and your device happens to be running 2.1 or earlier.

There's this SO question with a workaround, but it shouldn't be relied upon and will crash on some devices. Here's a post on the android-ndk group explaining the issues.


just try these changes:

LOCAL_PATH := $(call my-dir)

# Add prebuilt libjnigraphics

include $(CLEAR_VARS)

LOCAL_MODULE := graphics-prebuilt

LOCAL_SRC_FILES := libjnigraphics.so

LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH)/include

include $(PREBUILT_SHARED_LIBRARY)

include $(CLEAR_VARS)

# Here we give our module name and source file(s)

LOCAL_MODULE := ndkfoo

LOCAL_SRC_FILES := ndkfoo.c

LOCAL_SHARED_LIBRARY := graphics-prebuilt

LOCAL_LDLIBS += -llog

include $(BUILD_SHARED_LIBRARY)

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜