ld:使用旧版本的Swift语言(XX)编译的SDK.framework比ObjC Framework的先前文件(未知的ABI版本YYY)

时间:2018-05-29 22:02:20

标签: ios objective-c swift xcode linker

简介

我正在处理SDK.framework,我需要将其作为闭源软件进行分发。为了涵盖objective-c和swift项目,我决定将它写在objective-c

在本地环境中,我有两个项目:

  • SDK(框架源代码)
  • DemoApp(与SDK.framework相关联的应用)

*这些项目位于不同的工作区

问题

当我在本地编译SDK.framework时,它完美无缺。

一旦我从CI获得一个(它有不同的iOS SDK版本)并尝试将其与DemoApp链接,我收到此错误:

  

ld:用旧版Swift语言(4.0)编译的SDK.framework比以前的文件(未知的ABI版本0x06)

问题

  1. 因为我的SDK 100%objective-c框架,我不知道为什么它声称swift版本
  2. 我的SDK依赖于另一个框架,其中一个是SocketIO-Client-Swift。 AFAIK这与上面的错误无关,因为我使用SocketIO-Client-Swift编译DemoApp,因此它与DemoApp app
  3. 具有相同的快速版本

    我做了什么

    1. 使用otool -l SDK.framework检查了所有元信息,没有任何对swift的引用
    2. 我尝试将其作为静态库分发但在这种情况下我会遇到支持Carthage依赖管理器
    3. 的问题

1 个答案:

答案 0 :(得分:2)

最有可能的原因是,您与Swift框架链接。甚至你的代码都是100%Obj-C它包含对你的SDK ABI的一部分的Swift调用的引用。

考虑使用C ++版本的SocketIO。

https://github.com/socketio/socket.io-client-cpp