ld: SDK.framework скомпилирован с более старой версией языка Swift (XX), чем предыдущие файлы (неизвестная ABI-версия YYY) ObjC Framework - PullRequest
0 голосов
/ 30 мая 2018

Intro

Я работаю над 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% target-c Framework, я понятия не имеюпочему он заявляет о быстрой версии
  2. Мой SDK зависит от других платформ, и одна из них - SocketIO-Client-Swift.AFAIK это не должно быть связано с ошибкой выше, потому что я компилирую SocketIO-Client-Swift с DemoApp, поэтому он имеет ту же версию swift, что и DemoApp app

То, что я сделал

  1. С otool -l SDK.framework Я проверил всю мета-информацию, нет никаких ссылок на swift
  2. Я попытался распространить ее как статическую библиотеку, но в этом случае у меня будут проблемы с поддержкой Carthage диспетчера зависимостей

1 Ответ

0 голосов
/ 01 июня 2018

Скорее всего, это связано с тем, что вы связаны с фреймворком Swift.Даже ваш код на 100% Obj-C, он содержит ссылки на вызовы Swift, которые являются частью вашего SDK ABI.

Рассмотрим вместо этого версию SocketIO для C ++.

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

...