即使这里有很多类似的问题,我也无法解决这个问题,所以我决定发布自己的问题。 回顾一下:
.so
)和android-cmake
因为我已经在我的库中使用了cmake。在cmake中,我在gnustl_shared
选项中使用了ANDROID_STL
(我也尝试使用stlport_shared
,但没有运气。)我使用了原生的ndk-build
编译器。这是我的Android.mk
文件:
LOCAL_PATH := $(call my-dir)
### include the lib as a prebuilt lib ###
include $(CLEAR_VARS)
LOCAL_MODULE := libOS
LOCAL_SRC_FILES := libOS.so
LOCAL_EXPORT_C_INCLUDES := /home/Dev/libOS/include \
/home/Dev/libOS/include/yos/os \
/home/Dev/yos/build-arm/generated_include
include $(PREBUILT_SHARED_LIBRARY)
### build your ndk lib ###
include $(CLEAR_VARS)
LOCAL_MODULE := hello
LOCAL_SRC_FILES := main.cpp
LOCAL_SHARED_LIBRARIES := gnustl_shared libOS
include $(BUILD_SHARED_LIBRARY)
这是我的Application.mk
:
APP_ABI := armeabi-v7a
APP_STL := gnustl_shared
APP_MODULES := libOS hello
APP_PLATFORM := android-19
应用程序编译正确,一切正常。在我称之为本机功能的那一刻,通过向我扔下以下内容,它变得疯狂:
java.lang.UnsatisfiedLinkError: dlopen failed: cannot locate symbol "_ZSt24__throw_out_of_range_fmtPKcz" referenced by "libOS.so"...
此外,这是我的MainActivity.java
:
static{
// System.loadLibrary("stlport_shared");
System.loadLibrary("gnustl_shared");
System.loadLibrary("libOS");
System.loadLibrary("hello");
}
public native String hello();
由于我真的不明白该怎么做,我真的很乐意帮忙!我也尝试过类似的问题,例如android ndk UnsatisfiedLinkError when using a prebuilt shared library,但现在没有运气。
提前感谢您的帮助!