相关疑难解决方法(0)

Android NDK:load_library:找不到srand

我有一个android项目,我使用本机代码来处理SIP(使用libosip2和libeXosip2).我的本机代码与库的源一起编译到一个模块中.

代码编译得很好,生成的库具有我期望它拥有的所有符号,但是当我尝试加载生成的库时,我收到以下错误:

E/eXosip.loadLibrary(9210): java.lang.UnsatisfiedLinkError: Cannot load library: reloc_library[1307]:  1941 cannot locate 'srand'...
Run Code Online (Sandbox Code Playgroud)

我的Application.mk看起来像这样:

APP_STL         := gnustl_shared
APP_ABI         := armeabi-v7a
APP_CPPFLAGS    += -fexceptions
Run Code Online (Sandbox Code Playgroud)

我确实使用ndk-depends检查了未捕获的依赖项,这给了我

libeXosip_jni.so
libstdc++.so
liblog.so
libgnustl_shared.so
libm.so
libdl.so
libc.so
Run Code Online (Sandbox Code Playgroud)

添加loadLibrary("gnustl_shared")没有帮助(这是在"libs/armeabi-v7 /"中也找到的唯一一个提到的库).

我的Android.mk:

LOCAL_PATH  := $(call my-dir)
$(shell (cd $(LOCAL_PATH); sh extract_stuff.sh; cd $(OLDPWD)))


include $(CLEAR_VARS)
OSIP        := libosip2-4.1.0
EXOSIP      := libeXosip2-4.1.0
LOCAL_MODULE    := eXosip

LOCAL_C_INCLUDES    := $(LOCAL_PATH)/$(OSIP)/include \
                       $(LOCAL_PATH)/$(EXOSIP)/include

LOCAL_SRC_FILES := $(patsubst $(LOCAL_PATH)/%, %, $(wildcard $(LOCAL_PATH)/$(OSIP)/src/osipparser2/*.c)) \
                   $(patsubst $(LOCAL_PATH)/%, %, $(wildcard $(LOCAL_PATH)/$(OSIP)/src/osip2/*.c)) \
                   $(patsubst $(LOCAL_PATH)/%, %, $(wildcard $(LOCAL_PATH)/$(EXOSIP)/src/*.c))

LOCAL_CFLAGS …
Run Code Online (Sandbox Code Playgroud)

java android sip android-ndk unsatisfiedlinkerror

13
推荐指数
2
解决办法
1万
查看次数

标签 统计

android ×1

android-ndk ×1

java ×1

sip ×1

unsatisfiedlinkerror ×1