Нет такого модуля Common Crypto

Я работаю с быстрым 3.2. Я сделал файл заголовка моста, который имеет следующее:

#import <CommonCrypto/CommonCrypto.h>

В настройках сборки моих проектов я указываю на свой заголовочный файл моста, но я все еще получаю ошибку 'No such module CommonCrypto' в своих классах, где я использую import CommonCrypto

обновление: заголовочный файл:

#ifndef ProjectName_Bridging_Header_h
#define ProjectName_Bridging_Header_h

#import <CommonCrypto/CommonCrypto.h>

#endif

person user2363025    schedule 23.10.2017    source источник
comment
можете ли вы показать весь заголовок моста, я импортировал обычную криптографию точно так же, как и вы, и моя работает нормально   -  person TNguyen    schedule 23.10.2017
comment
Пробовали ли вы это?   -  person Daniel    schedule 23.10.2017
comment
вам не нужно делать import CommonCrypto, если он уже есть в вашем заголовочном файле. Вы можете просто использовать его прямо   -  person TNguyen    schedule 23.10.2017
comment
@TNguyen, если я удалю импорт CommonCrypto, я получу предупреждение о том, что «использование неразрешенного идентификатора CommonCrypto»   -  person user2363025    schedule 24.10.2017
comment
Раньше у меня был commonCrypto в фреймворке, и я использовал агрегат. При этом мне нужно было импортировать CommonCrypto и использовать его, например, как CommonCrypto.kCCOptionPKCS7Padding. Я удалил все свои «CommonCrypto». ссылки из моего быстрого файла, и это сработало - спасибо за помощь!   -  person user2363025    schedule 24.10.2017


Ответы (1)


Я нашел обходной путь, позволяющий Xcode найти CommonCrypto через модуль Swift, как указано здесь от Михаила Исаева.

Я использовал такой подход в своем проекте (Xcode 9.3, Swift 4). Я резюмирую шаги следующим образом.

  1. Создайте новый каталог, а именно CommonCrypto в корне вашего проекта (или для меня я создал его на том же уровне файла AppDelegate.swift)
  2. Создайте имя файла module.map внутри этого каталога (сделано вне Xcode) со следующим содержимым

    module CommonCrypto [system] {
       header "/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/usr/include/CommonCrypto/CommonCrypto.h"
       export *
    }
    

    Если вы устанавливаете Xcode в другом месте, вы можете вручную найти местоположение такого .app, а затем добавить его с помощью /Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/usr/include/CommonCrypto/CommonCrypto.h или вы можете выполнить xcode-select -p, чтобы получить путь к Xcode, а затем добавить его с помощью /SDKs/iPhoneOS.sdk/usr/include/CommonCrypto/CommonCrypto.h

  3. Перейдите к Build Settings в Xcode, затем найдите swift compiler - search paths.

  4. Введите $(PROJECT_DIR)/<project name>/CommonCrypto в его Import Paths, где <project name> — название вашего проекта.
  5. Теперь вы сможете собрать проект, и Xcode найдет такой модуль.

Примечание: нет необходимости добавлять такой каталог CommonCrypto, в котором находится файл module.map, в Xcode через Add Files to .... Он используется только на этапе компиляции, поэтому проблем нет.

person haxpor    schedule 21.05.2018
comment
Вы используете рейв-фреймворк? внутри модуля commoncrypto, какой должен быть путь в моем случае .app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/usr/include/CommonCrypto/CommonCrypto.h, где находится commoncrypto, я должен заменить это? - person Midhun Narayan; 11.12.2018