Я строю инфраструктуру iOS с использованием Swift и Objective-C (необходимо использовать оба из них из-за других ограничений). В моем объектно-c-коде мне нужно использовать символ, назовите его MyUndefinedSymbol
, который будет доступен во время выполнения, но не во время компиляции и ссылки.Маркировка символа как неопределенного в рамках iOS
Я определил, как символ extern
, чтобы заглушить ошибки компилятора: extern void MyUndefinedSymbol();
Однако, компоновщик жалуется, что MyUndefinedSymbol
не определен.
Вопрос: как заставить компоновщик игнорировать этот неопределенный символ?
В поисках этого много решений, никто из них не работал. То, что я пробовал:
- Используя флаг в
-undefined
компоновщика. Он устарел и не позволит включить бит-код (который мне нужен). - Использование флага клана
-U
. - Добавление атрибута
weak_import
с использованием__attribute__((weak_import))
- Использование
--unresolved-symbols=ignore-all
.
Где символ появляется во время выполнения? –
Структура (которая по существу является плагином) будет внедрена другими приложениями, которые определяют этот символ. IOW, символ будет доступен во время компиляции этих приложений, но не во время компиляции фрейма ... – MatanRubin
Вы можете загрузить его во время выполнения с помощью 'dlsym()' ... –