簡體   English   中英

JNI靜態庫無法鏈接

[英]JNI Static Library Failing to Link

我正在嘗試調試在構建應用程序的C ++端時遇到的一些鏈接錯誤。 Android.mk如下所示:

LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)

LOCAL_MODULE    := GLES
LOCAL_SRC_FILES := ModelGLES.cpp RendererGLES.cpp
LOCAL_LDLIBS    := -llog -lGLESv1_CM
LOCAL_LDFLAGS   := -Wl,-Map,$(LOCAL_MODULE).map 

include $(BUILD_SHARED_LIBRARY)

include $(CLEAR_VARS)

LOCAL_MODULE    := SndSys
LOCAL_SRC_FILES := SndSys.cpp libaudio_wrapper.cpp
LOCAL_STATIC_LIBRARIES := libaudio_ARM_NDK
LOCAL_LDLIBS := -llog
LOCAL_LDFLAGS   := -Wl,-Map,$(LOCAL_MODULE).map 
LOCAL_C_INCLUDES := $(LOCAL_PATH)

include $(BUILD_SHARED_LIBRARY)

我遇到的錯誤是libaudio_wrapper。 鏈接器無法重命名libaudio_ARM_NDK中的符號。 文件夾結構如下所示:

App \\ jni \\ SndSys.cpp libaudio_wrapper.cpp Android.mk libaudio_ARM_NDK.a

我正在jni文件夾中調用ndk-build形式。 輸出如下:

Gdbserver      : [arm-linux-androideabi-4.4.3] libs/armeabi/gdbserver
Gdbsetup       : libs/armeabi/gdb.setup
Compile++ thumb  : GLES <= ModelGLES.cpp
Compile++ thumb  : GLES <= RendererGLES.cpp
SharedLibrary  : libGLES.so
Install        : libGLES.so => libs/armeabi/libGLES.so
Compile++ thumb  : SndSys <= SndSys.cpp
Compile++ thumb  : SndSys <= libaudio_wrapper.cpp
SharedLibrary  : libSndSys.so
/Users/bob/Desktop/Root/Relaxation/obj/local/armeabi/objs-debug/SndSys/libaudio_wrapper.o: In function `audioInit(int, int)':
/Users/bob/Desktop/Root/Relaxation/jni/libaudio_wrapper.cpp:37: undefined reference to `GetAudioChannelSize'
/Users/bob/Desktop/Root/Relaxation/jni/libaudio_wrapper.cpp:38: undefined reference to `GetAudioInitControlSize'

有沒有一種簡單的方法來查看鏈接器是否正在查找我的庫? 還是要獲取對gcc或ld的命令行調用?

問題是我已升級到ndk-r5。 構建預建庫的某些規則已更改。 每個預構建的庫都需要為其保留自己的模塊。 Android.ml的后半部分應如下所示:

include $(CLEAR_VARS)

LOCAL_MODULE := audiolib
LOCAL_SRC_FILES := libaudio_ARM_NDK.a

include $(PREBUILT_STATIC_LIBRARY)


include $(CLEAR_VARS)

LOCAL_MODULE    := SndSys
LOCAL_SRC_FILES := SndSys.cpp libaduio_wrapper.cpp
LOCAL_STATIC_LIBRARIES := audiolib
LOCAL_LDLIBS := -llog

include $(BUILD_SHARED_LIBRARY)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM