代码之家  ›  专栏  ›  技术社区  ›  CAMOBAP

ld:sdk.framework使用比objc framework以前的文件(未知的abi版本yyy)旧的swift语言(xx)编译

  •  4
  • CAMOBAP  · 技术社区  · 6 年前

    简介

    SDK.framework 我需要以 封闭源 软件。为了涵盖objective-c和swift项目,我决定把它写在objective-c上

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

    • SDK(框架源代码)
    • demoapp(与sdk.framework链接的应用程序)

    *这些项目位于单独的工作区中

    问题

    当我编译时 sdk.framework框架 在本地它工作得很好。

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

    ld:sdk.framework,使用较旧版本的swift语言(4.0)编译,而不是以前的文件(未知的abi版本0x06)

    问题

    1. 因为我的SDK 100%Objective-C框架,我不知道它为什么声称使用Swift版本。
    2. 我的sdk依赖于其他框架,其中一个是 SocketIO-Client-Swift . 这不应该和上面的错误有关,因为我编译了 客户:Swift 具有 ,所以它的swift版本与 演示 应用程序

    我所做的

    1. otool -l SDK.framework 我查过所有的元信息,没有提到swift
    2. 我试过将它作为静态库分发,但在这种情况下,我将遇到支持方面的问题 Carthage 依赖关系管理器
    1 回复  |  直到 6 年前
        1
  •  2
  •   Ihar Tumashyk    6 年前

    最有可能的是,这是因为您与Swift框架相关联。即使您的代码是100%obj-c,它也包含对swift调用的引用,而swift调用是您的sdk abi的一部分。

    考虑C++版本的SokKeTio。

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