Использование статических библиотек C / C ++ из приложений iPhone ObjectiveC
Возможно ли иметь API статической библиотеки C, которая использует C ++ для внутреннего использования и скрывает это от пользователей библиотеки?
Я написал переносимую библиотеку C ++, которую я хотел бы статически связать с приложением iPhone.
Я создал проект XCode, используя шаблон «статической библиотеки» Max OS X, и скопировал исходный код, а также написал C-ваппер (для обработки исключений), используя (extern «C»).
Я пытаюсь использовать сгенерированную библиотеку (файл .a) в другом приложении Cocoa iPhone.
Все работает хорошо, если я использую расширения (.mm) в вызывающем файле ObjectiveC и (.cpp) в классе реализации в библиотеке.
Но я получаю неразрешенные символы при связывании, когда пытаюсь изменить файл оболочки на расширение (.c), даже если все файлы функций оболочки являются только Си-функциями.
Просто потому, что C ++ используется внутри библиотеки, означает ли это, что внешне он все еще должен рассматриваться как программа C ++. Разве нет в любом случае для обеспечения этой абстракции?
Редактировать: Спасибо за ответы,
Я использовал extern «C», я просто не был уверен в том, какие конфигурации нужны в вызывающем проекте. то есть. если предполагаемый вызов потребует знать, использует ли он C ++ или может быть невежественным, и думать, что это чисто библиотека C.
Казалось бы, я не могу, и я должен использовать (.mm) файлы на моих классах ObjectiveC.