我需要分发一个闭源库(以动态的形式.framework),它在内部使用C++并在模块边界公开Objective-C API.该库将被其应用程序中的众多客户使用.
据我所知,默认情况下,C++运行时通过动态链接libc++.dylib.所以问题是:iOS版本/编译器版本之间的运行时兼容吗?我的客户在使用我的库时是否会遇到二进制兼容性问题(例如,OS附带了不同的运行时版本,在我的库中产生了微妙的错误)?
Sidenote(关于此问题的来源):在Windows上,如果要确保二进制文件适用于所有系统而不需要提供特定的版本运行时组件,则通常需要静态链接C++运行时.所以我想知道iOS上是否存在同样的问题.
只有 Apple 知道是否或何时不再支持某些 C++ 库。我的猜测是,依赖于不再支持的运行时的应用程序将完全停止工作,或者首先不会使用您的库进行构建。我在这里找到了此信息(Xcode 10 (iOS 12) does not contains libstdc++6.0.9),表明多年来,对旧运行时的支持可能会被放弃,然后您需要构建另一个库。
从过去的经验来看,我们在应用程序商店中有一个应用程序 - 我知道,与库不太一样 - 具有 C++ 核心和 Objective-C shim,并且不关心 C++ 运行时兼容性。这从来没有成为一个问题。相反,时不时地(几年来和 iOS 迭代)会出现一些需要解决的轻微用户界面怪癖(我认为使用 iOS7 - 好吧,你可能没有 UI),然后强制迁移到 64 位,然后一些 API 发生了变化,Apple 想要这样或那样的东西……当出现问题时,我们使用最新的 XCode 进行构建,这将有助于保持运行,但旧版本继续工作。
结果是,在 C++ 运行时成为问题之前,您需要准备好维护您的库,也许还有其他“问题”,然后您只需为您的客户进行另一个构建。
| 归档时间: |
|
| 查看次数: |
302 次 |
| 最近记录: |