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