0

我们正在尝试在我们的 Android 应用程序中使用第三方 .a 静态库。.a 库是为 x86 构建的,我们将它与 PC linux 机器一起使用没有问题。

然后我们尝试通过这个 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

是因为 .a 文件是用 x86 编译的并且我们正在为 arm 构建吗?

.a 文件是遗留文件,很可能无法从源代码重新编译。如果这是问题,还有其他解决方案吗?

谢谢。

4

1 回答 1

0

您需要获取第三方库的源代码并将其交叉编译为原生 Android 的 NDK,使其二进制兼容。

简单地将 x86 静态库放入 Android 的 NDK 构建是行不通的。

于 2012-08-11T13:27:26.043 回答