首页 > 解决方案 > 在 Android Studio 上构建时在 .so 符号中添加了“ndk112”

问题描述

我正在使用Android.mk文件构建一个 Android 应用程序。我将此应用程序称为 A1。

.so我得到了一个具有实用程序功能的文件形式的第三方本机库。我将这个库称为 N1。N1 由第三方供应商基于 Android Studio 构建。

当我在 A1 中包含 N1 并尝试使用 构建 A1Android.mk时,由于符号不匹配错误,编译失败。

当我检查符号不匹配时,区别如下:

一个。Android Studio 生成的示例符号: _ZNSt6__ndk112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE6__initEPKcm

湾。Android.mk使用 A1 中存在的 N1 的头文件 生成的相同符号:_ZNSt6__basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE6__initEPKcm

不同之处在于,N1ndk112在其每个符号中都添加了 ' '。.so如果我们在 Notepad++ 中打开文件,就可以看到这一点。

我进行了很多搜索以检查是否有任何标志可用于解决此问题,但无法获得任何参考。有人可以帮我从使用 Android Studio 生成ndk112的文件的符号中删除“” 。.so

标签: androidcmakeandroid-ndkandroid-sourcendk-build

解决方案


与https://stackoverflow.com/a/38798556/632035的原因相同。N1 和 A1 使用不同的 STL。它们必须使用相同的 STL。您需要使用 libc++ 重建 A1。


推荐阅读