Я хочу сделать приложение в Swift, которое просто записывается через микрофон iPhone, а затем воспроизводит записанный звук.
Для этого я хотел бы использовать lib Superpowered, статичную библиотеку с файлами заголовков.
Для этого я попытался перетащить файлы .a и headers в свой проект (Xcode создает для меня заголовочный файл моста), добавьте .a в "Связанные структуры и библиотеки" в Xcode > Target > General ( и т.д. в Xcode > Target > Build phase > "Link Binary With Libraries" ) и индексируйте путь .h файлов в Xcode > Target > Build Settings > Path Search > Path Search >
Но с этим я имею ошибку "ld: символ (ы), не найденный для архитектуры arm64" Точно так же, как здесь XCode: Undefined символы для архитектуры arm64 error, и я пробовал все решения, которые я нашел в Интернете для этого, но до сих пор не удалось скомпилировать.
SO!
Superpowered дает нам пример приложения, чтобы показать, как смешивать Objective-C ++ и использовать их lib в проекте Swift (здесь ссылка на git, если вы хотите https://github.com/superpoweredSDK/Low-Latency-Android-Audio-iOS-Audio-Engine).
Вот несколько скриншотов примерного проекта с тем, что я понимаю, а что нет:
Файл Bridging-Header-File с прототипами методов lib, которые я хочу использовать в моем коде Swift (мне это не нравится, но если это единственный способ...).
Файл viewController, где находится код в Swift, и где я могу создать объект Superpowered благодаря файлу Bridging-Header-File и вызвать методы, которые я в него вложил.
И wtf Я даже не понимаю, почему этот Objective-C ++ файл здесь и что он содержит. Он выходит из ниоткуда, даже файлы lib.
Итак, с учетом этого примера проекта, я создал свой собственный проект, вот несколько скриншотов:
Тот же файл-заголовок-заголовок, который в примере проекта, за исключением того, что я включаю SuperpoweredIOSAudioIO.h
, поэтому я могу использовать SuperpoweredIOSAudioIODelegate
.
Мой файл viewController, где находится код в Swift, и где я могу создать объект Superpowered благодаря файлу Bridging-Header-File и вызвать методы, которые я вложил в него.
До сих пор это здорово, за исключением того, что я не могу создать объект SuperpoweredRecorder
. Если я попытаюсь включить файл SuperpoweredRecorder.h
в мой файл-заголовок-заголовок, у меня есть следующие ошибки:
Итак, я понял, что это связано с тем, что SuperpoweredRecorder.h
содержит некоторые .cpp файлы, и мне нужно создать оболочку для cpp (немного похож на заголовок моста, нет?), но это включает в себя .h и .mm file, и я не знаю, что мне нужно добавить в файл .mm(код SuperpoweredRecorder.cpp
? Но у меня нет доступа к нему)
Итак, да, я немного смущен всем этим, не могли бы вы помочь мне понять, как я могу использовать всю супермощную lib в моем проекте Swift?