Включить статическую библиотеку C ++ в проект Objective C - PullRequest
1 голос
/ 02 декабря 2010

Я хочу создать C ++ библиотеку и включить ее в мой код Objective C.Я работаю в XCode.Вот код C ++:

-------------- core.cpp ----------

#include <vector>
#include <algorithm>

extern "C" void my_sort(std::vector<int>& a) throw()
{
 sort(a.begin(), a.end()); // this is std::vector's sort function 
}

Итак, я хочусоздать библиотеку so для включения ее в код Obejctive C.Как включить или импортировать?.. Я хочу вызвать функцию my_sort ()?

Спасибо!

1 Ответ

0 голосов
/ 02 декабря 2010

Проблема в том, что ваша функция имеет внешнюю связь С.Следовательно, он не может использовать аргументы типа std::vector, а также объявления throw, поскольку они являются компонентами C ++.

Чтобы включить его в ваш целевой код C, вы должны написать сопроводительный заголовочный файл, который объявит вашэкспортируемая функция.Его будет намного легче экспортировать, как только вы удалите все ссылки на C ++ из его интерфейса.Это также избавит от необходимости включать заголовки C ++.

Затем, чтобы использовать его из кода Objective C, # включите файл заголовка и передайте информацию о компоновщике в вашу библиотеку.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...