У меня есть статическая библиотека от стороннего SDK - это FIT SDK, который кодирует и декодирует «Flexible Interoperable Data Transfer Protocol», используемый для различных видов спорта и фитнеса оборудование. Это двоичный формат, хорошо описанный в SDK, который также поставляется с кучей примеров CPP, C-Sharp и Objective-C - плюс статическая библиотека, построенная из источника CPP.Building Swift, Objective-C и статическая библиотека C++ вместе
От того, что все, кажется, говорят, я должен был бы создать мое приложение Swift со статической библиотекой, включая требуемый заголовок моста.
Я сделал экран (https://vimeo.com/205082135), показывая, что происходит, и именно поэтому я здесь.
Я могу получить Xcode 8 (beta 3), чтобы создать новый, свежий проект, содержащий библиотеку и даже некоторый код Objective-C. Как только я добавляю заголовок моста, даже с рудиментарным включением, кратеры XCode с ошибкой Linker, жалуются, что не могут найти какой-либо класс из стандартной библиотеки C++, например или. Пахнет проблемой управления конфигурацией с помощью Xcode, который я просто не могу разобраться.
Мой пример проекта с библиотекой здесь: https://github.com/bleeckerj/Xcode-FIT-TEST
Кто-нибудь видел такую вещь раньше?
Я не уверен, что это полностью решит вашу проблему, но Swift не может взаимодействовать с C++ напрямую. Вам нужно будет обернуть C++ lib API Objective C и выставить только Objective C API для Swift. –
Комментарий Дейва верен. Вы можете использовать API C (не C++) непосредственно из Swift или API Obj-C, если он есть (хотя, основываясь на том, что ваш проект имеет .mm-файлы, я предполагаю, что не существует ранее существовавшего обертка). В противном случае вам придется обернуть его самостоятельно. – jtbandes
См. Также: https://developer.apple.com/library/content/documentation/Swift/Conceptual/BuildingCocoaApps/InteractingWithCAPIs.html#//apple_ref/doc/uid/TP40014216-CH8-ID17 – jtbandes