【发布时间】:2019-08-27 18:54:23
【问题描述】:
我正在使用 Android.mk 文件构建一个 Android 应用程序。我将此应用程序称为 A1。
我得到了一个具有实用程序功能的.so 文件形式的第三方本机库。我将把这个库称为 N1。 N1 由第三方供应商基于 Android Studio 构建。
当我在 A1 中包含 N1 并尝试使用 Android.mk 构建 A1 时,由于符号不匹配错误,编译失败。
当我检查符号不匹配时,区别如下:
一个。 Android Studio 生成的示例符号:
_ZNSt6__ndk112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE6__initEPKcm
b. Android.mk 使用 A1 中存在的 N1 的头文件生成的相同符号:
_ZNSt6__basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE6__initEPKcm
不同之处在于,N1 的每个符号中都添加了“ndk112”。如果我们在 Notepad++ 中打开 .so 文件,就可以看到这一点。
我进行了很多搜索以检查是否有任何标志可用于解决此问题,但无法获得任何参考。有人可以帮我从使用 Android Studio 生成的.so 文件的符号中删除“ndk112”。
【问题讨论】:
标签: android cmake android-ndk android-source ndk-build