NDK - Swig - Android Studio - 未找到任何实现错误

时间:2015-05-26 21:40:43

标签: android android-ndk

我创建了一个使用NDK的Android应用程序。 在jni目录下,我有一堆C ++文件和C目录下的.c和.h文件。我使用swig工具通过C ++代码创建了JNI接口。到现在为止还挺好。 应用程序正在编译文件,我能够运行应用程序并从C ++类调用API。

现在我想使用.c和.h文件创建一个静态库,并将其包含在我的Android.mk中,而不是将所有文件编译成单个.so文件。 我创建了一个新的Android.mk文件并包含.c并创建了一个静态库。 当我编译代码时,我可以看到.a文件被创建。

我将以下行包含在jni目录下的Android.mk文件中。

include $(call all-subdir-makefiles)

...从LOCAL_SRC_FILES变量中删除.c文件。

LOCAL_STATIC_LIBRARIES += libhello

经过这种变化, 我可以编译代码并启动应用程序。但是当我从C ++类调用API时(之前工作的函数相同),现在应用程序崩溃并出现异常 java.lang.UnsatisfiedLinkError:未找到任何实现

  • 我验证了apk中是否有.so文件,这似乎不是问题所在。
  • 检查.so文件是否正确加载。
  • 而不是指定“include $(call all-subdir-makefiles)” 我也试过直接包括“#include C / Android.mk”
  • 我尝试搜索simi

仍然应用程序失败并出现相同的异常。 感谢有人可以帮我解决这个问题。

谢谢, Ajala

我正在为项目提供Android.mk文件内容

/*********************************************/
LOCAL_PATH := $(call my-dir)
MY_PATH := $(LOCAL_PATH)

include $(call all-subdir-makefiles)



include $(CLEAR_VARS)

LOCAL_MODULE    := SWIGCPlusTester

LOCAL_CPP_EXTENSION := .cxx .cpp


MY_LOCAL_SRC_FILES := 
$(wildcard $(MY_PATH)/*.cpp)
MY_LOCAL_SRC_FILES := \
$(wildcard $(MY_PATH)/*.cxx)


LOCAL_SRC_FILES := \
$(subst jni/, , $(MY_LOCAL_SRC_FILES))

LOCAL_LDLIBS :=-llog

LOCAL_STATIC_LIBRARIES := libhello

include $(BUILD_SHARED_LIBRARY)
/*********************************************/

我还附加了“C”目录中的Android.mk文件内容。

/*********************************************/
LOCAL_PATH := $(call my-dir)
LOCAL_PATH_INCLUDE := $(LOCAL_PATH)

include $(CLEAR_VARS)

LOCAL_MODULE := hello

LOCAL_SRC_FILES := hello.c

include $(BUILD_STATIC_LIBRARY)
/*********************************************/

我根据示例https://code.google.com/p/razzlegames-android-ndk-tutorial/创建了mk文件 希望这些信息有助于确定问题。

0 个答案:

没有答案