Поскольку я новичок во всех вещах, связанных с C ++ и gcc, мне нужно понять что-то потенциально важное. Если я использую файлы .mm в новом проекте iphone, выход которого является статическим lib, я получаю эту ошибку:
"___ gxx_personality_v0", по ссылке с:
Если я изменю тип стандартной библиотеки C ++ с динамического (по умолчанию) на статический, ошибка исчезнет. Это ограничение SDK? Могут ли расширения Obj-C ++ НЕ быть включены в динамической библиотеке? Имейте в виду, что я новичок, и я только притворяюсь, что знаю, о чем я говорю здесь. Я также хочу знать разницу между этими настройками, и если их изменение может оказать негативное влияние. Верно ли мое предположение о том, что динамическая библиотека загружается во время выполнения, а статическая библиотека связана с окончательным двоичным файлом во время сборки? Если это так, то почему iPhone SDK позволяет создавать динамическую библиотеку? Вы не можете устанавливать сторонние библиотеки на iPhone до настоящего времени и делиться ими между приложениями.
Обновление
Несколько человек ответили, и я ценю ответы. Однако я хочу уточнить кое-что, что кажется неправильно понятым из моего первоначального вопроса. Переключение типа файла с «.m» на «.mm» не является ответом, скорее это то, что вызвало исключение. Ситуация такова: разработайте статическую библиотеку для iPhone, которая использует файлы Obj-C ++ с расширением ".mm". Затем используйте эту библиотеку в приложении для iPhone (или в модульном тесте). Если цель клиента не переключена на использование «статического» вместо по умолчанию «динамического» для типа библиотеки Std C ++, вы увидите эту ошибку. Первоначально я думал, что, возможно, вносил незначительную ошибку, изменяя этот параметр, но сейчас я пытаюсь понять разницу и почему значение по умолчанию установлено способом, который кажется противоположным типичному варианту использования.