0

ps: this question has been resolved. In fact, It caused by carelessness of myself. I compile library under one platform, and then use it in another platform. so finally, there isn't some needed library inside. so a joking!

I'm beginner for android development. Now, I want to re-compile the project(droidvncserver) and run this application in MTK platform. In this application JNI application was used to call a dynamic library named libdvnc_flinger_sdk17.so which is compiled in MTK's AOSP. so in JNI, call this library with dlopen function like this:

flinger_lib = dlopen(lib_name, RTLD_NOW);

Anymore, libvnc_flinger_sdk17.so call some system library such as libui.so, libgui.so, libbinder.so etc. The Android.mk used to get libvnc_flinger_sdk17.so write here:

LOCAL_PATH:= $(call my-dir)
include $(CLEAR_VARS)

LOCAL_SRC_FILES = \
         flinger.cpp

#LOCAL_CFLAGS += -DPLATFORM_SDK_VERSION=$(PLATFORM_SDK_VERSION)

LOCAL_C_INCLUDES += \
          $(LOCAL_PATH) \
          $(LOCAL_PATH)/..

LOCAL_PRELINK_MODULE:=false #override prelink map
LOCAL_MODULE:= libdvnc_flinger_sdk$(PLATFORM_SDK_VERSION)
LOCAL_MODULE_TAGS:= optional
LOCAL_MODULE_PATH := $(LOCAL_PATH)/../libs/$(TARGET_CPU_ABI)

LOCAL_SHARED_LIBRARIES := libgui libui libbinder libcutils libutils libskia

include $(BUILD_SHARED_LIBRARY)

In fact, The whole JNI applicaton was make as an executable program nameed libvncserver.so. and in java code I start another shell process to run libvncserver.so. Until now question is coming, when I run the whole project as android application in phone, logcat report a error: Error string: dlopen failed: cannot locate symbol "_ZN7android18getPixelFormatInfoEiPNS_15PixelFormatInfoE" referenced by "libdvnc_flinger_sdk17.so"

I have searched the function getPixelFormatInfo with command "objdump -s libui.so", and the result show that it existed in this system library. I also find in my phone this library existed in the directory of /system/lib too. Other more, I have push this library into /data/data/org.naiops.vnc/lib, but also don't wok, why that happended? how can i do?

DarkHorse
  • 161
  • 1
  • 12
  • Have you checked these links http://stackoverflow.com/questions/24929594/java-lang-unsatisfiedlinkerror-dlopen-failed-cannot-locate-symbol-cmsg-nxthdr , http://stackoverflow.com/questions/4723681/unable-to-dlopenlibsomething-so-cannot-load-library-link-image1995-failed , – Piyush Nov 15 '14 at 07:13
  • This will help you https://vilimpoc.org/blog/2010/09/23/hello-gdbserver-a-debuggable-jni-example-for-android/ – Piyush Nov 15 '14 at 08:32

0 Answers0