私は4つの静的ライブラリを持っていますlibavcodec.a libavutil.a libswscale.a libx264.a
とリンクさせたいlibmytest.so
以下の Android.mk スクリプトを試しました
LOCAL_PATH := $(call my-dir)
INITIAL_PATH := $(LOCAL_PATH)
include $(CLEAR_VARS)
LOCAL_MODULE := mytest
LOCAL_SRC_FILES := mytest.c
LOCAL_LDLIBS += -llog
LOCAL_WHOLE_STATIC_LIBRARIES := libavutil libavcodec libswscale libx264
include $(BUILD_SHARED_LIBRARY)
mytest.c
これらのライブラリから多くの関数を呼び出します。4 つのライブラリは の中に配置されPROJECTPATH\jni\
ます。
しかし、私undefined reference
はそれらのライブラリからすべての関数を取得します。
共有ライブラリを作成できるようにしてみLOCAL_ALLOW_UNDEFINED_SYMBOLS := true
ましたが、アプリを起動すると、
01-22 07:15:15.650: E/AndroidRuntime(9655): Caused by: java.lang.UnsatisfiedLinkError: Cannot load library: reloc_library[1285]: 1868 cannot locate 'avcodec_register_all'...
01-22 07:15:15.650: E/AndroidRuntime(9655): at java.lang.Runtime.loadLibrary(Runtime.java:370)
01-22 07:15:15.650: E/AndroidRuntime(9655): at java.lang.System.loadLibrary(System.java:535)