Obecnie oceniam, czy biblioteka c / c ++ możebyć wykorzystywane do konkretnego projektu iPhone'a. Oryginalna biblioteka intensywnie wykorzystuje specyficzny dla systemu Windows kod (na przykład zawiera windows.h i winsock.h). Zdaję sobie sprawę, że będę musiał przepisać części, które używają specyficznego dla Windows kodu i zastąpić winsocks np. Gniazdami bsd. Lub spróbuj przekonwertować na cel-c ++ i używać specyficznych interfejsów sieciowych IOS, jak jest to zalecane w dokumentacji Apple.
Ale jak się okazuje w dokumentacji Apple'a, w systemie iOS dozwolony jest tylko kod C i Objective-C dla sieci. "IOS obsługuje kod sieci napisany w C i Objective-C." ( https://developer.apple.com/library/ios/#referencelibrary/GettingStarted/GS_Networking_iPhone/ )
To brzmi jak muszę przepisać całośćbiblioteka w celu-c, aby działała na IOS. Czy wystarczy zaprogramować klasę wrappera w celu-c i pracować z oryginalną (dostosowaną do biblioteki bsd socket api lub target-c ++)? -> Korzystanie z bibliotek statycznych C / C ++ z aplikacji iPhone ObjectiveC
Ale rzeczywisty kod sieciowy nadal byłby napisany c / c ++, a nie celem-c.
Czy jest jakaś szansa, że to może zadziałać? Nie chcę wykonywać całej pracy związanej z adaptowaniem biblioteki, a następnie zauważyć, że to podejście nie działa.
Czy ktoś kiedyś próbował czegoś podobnego?
Z poważaniem, Mikrofon
Odpowiedzi:
1 dla odpowiedzi № 1Powinieneś być w stanie przepisać fragmenty swojej biblioteki C ++ do używanych gniazd BSD zamiast z API gniazd Windows bez żadnych problemów.
Apple nie zabrania dostępu do kodu w C ++sieć, jednak jedyne sieciowe interfejsy API oferowane przez iOS znajdują się w C (gniazdach BSD, CoreFundation) lub Objective-C (Foundation ...), być może to jest źródłem twojego zamieszania. Możesz dowolnie mieszać C, C ++ i Objective-C kod we własnym kodzie lub w statycznie połączonych bibliotekach.