Расширяя сказанное pmjordan, если у вас есть файл .m, вызывающий .mm или .cpp, убедитесь, что основной заголовок .mm или .cpp, где объявлены вызываемые вами функции, имеетусловно скомпилированный extern "C"
как этот файл .h:
#ifdef __cplusplus
extern "C" {
#endif
void functionA(void);
void functionB(const char *);
#ifdef __cplusplus
}
#endif
Когда этот заголовок включен как часть .mm или .cpp, extern "C"
будет делать правильные вещи, и когда .hскомпилирован как часть вызывающего файла .c или .m, который вызывает эти функции, extern "c"
исключается и не вызывает жалоб компилятора.
Использование этого решения предотвратит ненужное изменение .mфайлы в .mm файлы, чтобы вы могли просто вызывать подпрограммы C в файлах c ++.