быстрый компилятор не может найти библиотеки C ++ - PullRequest
0 голосов
/ 12 марта 2019

Я создал два проекта iOS для одиночного просмотра из Xcode.Первый в Swift и второй в Objective-C.

В этих двух проектах я добавляю оба файла Test.cpp / Test.hpp, которые включают только библиотеку C ++.Конечно, только для проекта Swift мне нужно создать Bridging Header для импорта этого файла.

Файл Test.hpp выглядит следующим образом:

#ifndef TestCpp_hpp
#define TestCpp_hpp

#include <stdio.h>
#include <cstdlib>

#endif /* TestCpp_hpp */

У меня проблема в том, чтопроект Objective-C успешно создается, в то время как проект Swift не может найти библиотеку cstdlib C ++.

Я проверил команду компиляции, и проект Swift использует swift для сборки.Проект Objective-C использует clang.

Я попытался изменить C++ Language Dialect и C++ Standard Library в настройках сборки, но ничего не работает.

Есть ли какие-то особые настройки, которые нужно сделатьчтобы можно было построить проект Swift?

1 Ответ

0 голосов
/ 29 марта 2019

Вы не можете включать заголовки C ++ в свой мостовой заголовок для вызова кода C ++ непосредственно из Swift.По сути, есть как минимум две опции.

  • Напишите оболочку C вокруг кода C ++ и включите оболочку C в Swift через соединительный заголовок.
  • Напишите оболочку Objective-C ++ сAPI, который не включает типы C ++.Внутренне реализация оболочки может вызывать код C ++.Вызовите API-оболочку в Swift, как если бы вы вызывали любой код Objective-C.

Оба эти подхода описаны здесь:

Взаимодействие с классами C ++ из Swift

...