我有.so文件,我使用c库创建。现在我想在另一个项目中使用.so文件来调用这些函数。我不知道如何使用该库。如何调用该库中的任何函数?我已经尝试但发现错误,因为没有找到Native方法。我是一个初学者,在android.any帮助这个Ndk .. ??
我已经提到了许多链接,那些没有解决我的问题 Native method not found,
java.lang.UnsatisfiedLinkError: Native method not found,
我面对的是这个链接,但没有答案。链接是 Need NDK Help: How to call a C++ function for shared library from another project that uses C++
我的Android.mk文件如下所示,我创建了.so文件
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := ShairportSample
LOCAL_SRC_FILES := ShairportSample.cpp
APP_PLATFORM := android-19
include $(BUILD_SHARED_LIBRARY)
答案 0 :(得分:0)
你可以调用你希望从另一个NDK lib重用的.so中实现的函数,将它设置为预建的共享库,取决于你的 Android.mk 文件:
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := ShairportSample
LOCAL_SRC_FILES := libs/$(TARGET_CPU_ABI)/libShairportSample.so
LOCAL_EXPORT_C_INCLUDES := PATH_TO_ShairportSample.h
include $(PREBUILT_SHARED_LIBRARY)
include $(CLEAR_VARS)
LOCAL_MODULE := yournewlib
LOCAL_SRC_FILES := yournewlib.cpp
LOCAL_SHARED_LIBRARIES += ShairportSample
include $(BUILD_SHARED_LIBRARY)
从Java代码中,您必须在加载newlib之前从Java加载ShairportSample lib。
否则,如果要直接从Java重用.so,则应导出使用它的Java库(.jar)。然后,您可以从其他项目重用此Java库。
答案 1 :(得分:0)
首先,你应该确保正确编译.so文件,将其命名为libYourLibName.so,将其放入libs / armeabi文件夹。
其次,确保已从静态块
static { 的System.loadLibrary( “YourLibName”); }
这可能会对你有所帮助