2014-11-24 4 views
3

Я пытаюсь вызвать функции в инфраструктуре vDSP с помощью кода Swift для iOS 8.1 с использованием xcode 6.1. Ниже приведен пример:Доступ к vDSP от быстрого в симуляторе для более старых устройств

public func create_fft_setup(length: Int) -> FFTSetup { 
let log2N = vDSP_Length(log2(CDouble(length)+1.0)) 
return vDSP_create_fftsetup(vDSP_Length(log2N), FFTRadix(kFFTRadix2)) 

}

Этот код соответствует и работает на тренажере для iPhone 5s, 6 и 6+ и Ipad воздуха. Все устаревшие устройства не работают с ошибкой Swift Compiler «использование неразрешенного идентификатора» для имени функции vDSP. Typedefs из того же заголовочного файла, что и имена функций, в порядке. Явный импорт заголовка Accelerate в заголовочный файл моста не имеет значения.

Я могу скомпилировать и запустить код на двух старых устройствах, которые у меня есть, ipod и retina ipad.

Если я вызываю функции vDSP из объектно-C-файла, жалобы нет.

Если я вызываю функцию из swift в функцию в objc и вызываю vDSP из этой функции, она работает.

Итак, мой вопрос: я делаю что-то неправильно, а если нет, есть ли простой способ сделать эту работу должным образом? Это удобно для использования симулятора для размера экрана 4s.

+0

Вы поняли это? Я просто начал эту проблему, казалось бы, случайно после того, как мой код работал в течение недель. – ephemer

+0

У меня такая же ошибка. Возможно ли это, что это связано с архитектурой 32 и 64 бит? –

+0

Такая же ошибка здесь, заинтересованная в ответе – oulipo

ответ

0

Apple, наконец, исправил эту проблему в xcode 7 beta 4 или 5 (7 месяцев спустя)