Mam Swift Framework, który kompilujemy i rozpowszechniamy na rzecz zewnętrznych programistów. Chcę dołączyć do projektu kod C, ale jedyny sposób, w jaki udało mi się go uruchomić, to importowanie nagłówka C do nagłówka mojego framework'a i ustawienie nagłówka C jako publicznego. To ujawnia cały kod C deweloperom zewnętrznym, co nie jest tym, czego chcemy.Jak skompilować kod C do Swift Framework
Wszystko mogę znaleźć online, jak to zrobić jest odmianą tej metody: https://spin.atomicobject.com/2015/02/23/c-libraries-swift/
Ale zastrzeżenie tej metody jest „Zauważ, że konsumenci wszelkich ram Ci zbudować używając tej techniki są również będzie mieć aby dodać moduł do ich ścieżek wyszukiwania Swift. " Próbowaliśmy tego i na pewno nasi zewnętrzni programiści dostali błąd Missing required module 'CGeodesic'
, który jest zdefiniowanym przez nas modułem wskazującym na nagłówek C.
W jaki sposób możemy po prostu skompilować kod C bezpośrednio do naszego systemu, zachowując kod prywatny i nie wymagając od zewnętrznych programistów zmiany ustawień kompilacji, aby działał? Nie mam nic przeciwko konieczności konfigurowania tych submodułów w naszym projekcie, ale na koniec tego dnia chcę, aby był on skompilowany bezpośrednio w jedno płaskie binarne ramy, bez dynamicznego łączenia lub ścieżek wyszukiwania lub czegoś podobnego.
Edycja
Projekt kod C side-by-side z kodem szybka. Mam podkatalog w moim projekcie, który wygląda tak:
- geodezyjnych/
- Geodesic.h
- Geodesic.c
- Geodesic.swift
Plik Swift zawija kod C, aby ułatwić pracę. Miałem również plik module.modulemap w tym katalogu, ale jak już powiedziałem wcześniej, to nie działało. Wolałbym trzymać kod C równolegle z moim kodem Swift, ale jestem gotów dać to w celu rozwiązania tego problemu.
Jaka jest Twoja obecna konfiguracja? Kod C obok kodu Swift? – zneak
https://developer.apple.com/library/ios/documentation/Swift/Conceptual/BuildingCocoaApps/MixandMatch.html. czy to pomaga? Kod C to Objective-C i wygląda na to, że można napisać framework w mieszance C i Swift, i będzie wyglądał dla użytkowników tak, jakby był napisany w jednym języku. Jeszcze tego nie próbowałem. – OmniProg
@OmniProg, więc to właśnie robimy obecnie. Problem z tą metodą polega na tym, że z konieczności ujawnia ona wszystkie te nagłówki publicznie, czego właśnie próbujemy uniknąć. – user1084447