2014-11-19 4 views
1

Я переношу приложение для Android, которое использует библиотеку C++ для iOS. Библиотека C++ предоставляет основные приложения для приложения. Возможно ли включить библиотеку C++ в проект XCode?Как включить библиотеку C++ в Xcode

Я знаю, что компилятор Apple LLVM может скомпилировать C-код, поэтому возможным решением может быть компиляция кода на C++ в общую библиотеку, а затем предоставить C-оболочку для доступа к C++-коду из Objective-C. Аналогичное решение было принято с Android-приложением и JNI.

ответ

2

Да, вы можете.

Есть два способа сделать это.

Самый простой способ - просто добавить источники в проект iOS. Если у вас есть источники библиотеки, вы можете добавить его в свой проект, просто убедитесь, что у вас есть основной файл (и другие объектные файлы C), названный от .m до .mm, чтобы XCode теперь вы компилируете для C++.

Если вы хотите перейти на статическую связь, я настоятельно рекомендую создать проект статической библиотеки и добавить его в ту же рабочую область, что и основной проект Objective C, а затем объявить ее как зависимость для вашей цели сборки (проверить цели сборки/строить схемы ... XCode вещи здесь :)).

Если вы просто хотите предоставить статическую библиотеку двоичных файлов и просто пойти со статической связью оттуда (что я действительно не рекомендую, нет точек останова и какой-то другой боли на этом пути), тогда вам нужно иметь в виду следующее :

  • вам нужно будет иметь отдельно скомпилированные статическую библиотеку для каждой отдельной платформы (IOS симулятор, который отличается от iPhone, arm64, ARMv7 и armv7s) и ссылки соответственно
  • альтернатива указанным выше способом является сделать жир lib (универсальный lib)
0

Посмотрите в разделе «Связывание двоичных файлов с библиотеками» под своей целью. Щелкните правой кнопкой мыши на нем и выберите «Существующие файлы ...» - затем выберите библиотеку, к которой вы хотите подключиться. Вам не нужно использовать фреймворк, как предполагалось ранее.

+0

Я также должен предоставить заголовки, я полагаю. Заголовки также находятся на C++. –

+0

Перейдите в настройки проекта и убедитесь, что включены пути заголовка и библиотеки: введите это в пути заголовка/usr/local/include – Nagarjun