2012-08-11 70 views
0

我們正在嘗試在我們的Android應用程序中使用第三方.a靜態庫。 .a lib是爲x86編譯的,我們在沒有任何問題的情況下將它與PC Linux機器一起使用。在Android中使用第三方.a庫ndk應用程序

然後,我們嘗試使用這種Android.mk用它在Android:

LOCAL_PATH:= $(call my-dir) 

# first lib, which will be built statically 
# 
include $(CLEAR_VARS) 

LOCAL_MODULE := libtwolib-first 
LOCAL_SRC_FILES := rwl.a 
LOCAL_MODULE_SUFFIX := .a 

include $(PREBUILT_STATIC_LIBRARY) 

# second lib, which will depend on and include the first one 
# 
include $(CLEAR_VARS) 

LOCAL_MODULE := libtwolib-second 
LOCAL_SRC_FILES := second.c 

LOCAL_STATIC_LIBRARIES := libtwolib-first 

include $(BUILD_SHARED_LIBRARY) 

我們得到這個錯誤:

could not read symbols: File in wrong format 

是不是因爲某文件與x86和我們編譯正在建設的手臂?

.a文件是遺留的,很可能不能從源代碼重新編譯。如果這是問題,還有其他解決方案嗎?

謝謝。

回答

0

您需要獲取第三方庫的源代碼,並將其交叉編譯爲原生Android NDK,以使其二進制兼容。

簡單地將一個x86靜態庫放入Android的NDK構建只是不工作。

相關問題