首页 > 解决方案 > 链接使用 c++_static 构建的两个库

问题描述

在以下网页中,

https://developer.android.com/ndk/guides/cpp-support

它指出,编译两个库(libA.so、libB.so)c++_static打破了单一定义规则,其中将为不同库中的 c++ 函数定义多个符号。这种情况是未定义的行为,可能会出现多个错误。

但是,我不知道在以下情况下是否也会发生这种情况:

在这种情况下,问题不会发生,将共享库与静态库链接是安全的,对吗?还是libc++嵌入的符号libA.a

标签: androidc++android-ndkstatic-linkinglibc++

解决方案


这是安全的。事实上,既libA.a不会也libB.a不会与libc++. 静态库不与它们的依赖关系链接 - 这是在链接使用这些库的可执行文件/共享对象时完成的。

唯一libc++会出现在这两个静态库中的代码将是来自标头的(内联)代码。这不是问题。


推荐阅读