У меня есть исполняемый файл командной строки, из которого я хотел бы иметь возможность загружать практически любую динамическую библиотеку, которая содержит классы Objective-C.В настройках проекта я указал, что моя программа поддерживает сборку мусора (без необходимости).Для этого я использую dlopen
для загрузки библиотек, так как он глобально более гибкий, чем NSBundle
(во-первых, и самое главное, он может загружать библиотеки, которые не входят в пакет).
Однако, когда я пытаюсь загрузить библиотеку или фреймворк, для которого требуется сборка мусора, dlopen
завершается неудачно, и я получаю следующее сообщение:
Невозможно открыть / путь / к / объекту:dlopen (/ путь / к / lib, 2): подходящее изображение не найдено.Обнаружил:
/ path / to / lib: несоответствие возможностей GC
Если моя программа поддерживает сборку мусора, почему она не может загрузить библиотеки, которые в ней нуждаются?Как я могу загрузить библиотеки, которым это требуется?
Я не могу пометить свой исполняемый файл как , требующий сборки мусора, потому что он перестанет работать с библиотеками, которые его не поддерживают.
Сейчас у меня есть две версии моего исполняемого файла, но это подпункт.
Дополнительная информация : я нацеливаюсь только на Горного льва.Моя программа является универсальным двоичным файлом, и в настоящее время она выполняет перезапуск в качестве своего 32-разрядного аналога с использованием функции posix_spawn
, однако там, похоже, нет флага, управляющего сборкой мусора.