Spec-Zone .ru
спецификации, руководства, описания, API

Библиотека разработчика Mac

Разработчик

OS X ABI динамическая ссылка загрузчика

Опции
Развертывание Target:

На этой странице

OS X ABI динамическая ссылка загрузчика

Большинство приложений Mac должно загрузить и пользоваться динамическими совместно используемыми библиотеками или пакетами во время выполнения. Динамический загрузчик, dyld, совместно используемая библиотека что использование программ для получения доступа к другим совместно используемым библиотекам. Динамический загрузчик определяет местоположение Мужественных файлов на диске и отображает их в пространство памяти текущей программы.

Правильно написанные программы не загружают совместно использованные библиотеки, пока они не необходимы. Это минимизирует время запуска и объем потребляемой памяти приложения. Это может также улучшить общую производительность системы посредством сокращенной разбивки на страницы.

Этот документ описывает низкоуровневые функции двоичного интерфейса приложения (ABI) Mac, который можно использовать для загрузки, соединить и разгрузить Мужественные файлы во время выполнения.

Необходимо считать этот документ при разработке приложений, пользующихся динамическими совместно используемыми библиотеками или библиотеками, пользующимися другими библиотеками.

Эти документы предоставляют информацию о загрузке во время выполнения кода:

Функции

Это рекомендуемые функции для использования для взаимодействия с динамическим загрузчиком. Эти функции работают в OS X v10.3 и v10.4. Однако в OS X v10.4 они более эффективны, чем другие загружающие изображение функции. Эти функции объявляются в /usr/include/dlfcn.h.

  • Находит изображение и самый близкий символ, соответствующий адресу. Доступный только в динамично соединенных программах.

    Объявление

    Objective C

    int dladdr( const void* addr, Dl_info * info);

    Параметры

    addr

    На вводе, адресе в адресном пространстве программы.

    info

    Хранение для a Dl_info объект. По возврату найдена символьная информация.

    Возвращаемое значение

    Когда изображение, содержащее адрес, указанный в addr не может быть найден, эта функция возвраты 0. Иначе, результатом является значение кроме 0.

    Обсуждение

    Это - объявление для Dl_info структура:

    • typedef struct dl_info {
    • const char* dli_fname;
    • void* dli_fbase;
    • const char* dli_sname;
    • void* dli_saddr;
    • } Dl_info;

    Описания для полей в Dl_info :

    • dli_fname: Путь изображения, содержащего адрес в addr.

    • dli_fbase: Базовый адрес (mach_header) в котором изображение отображается в адресное пространство программы.

    • dli_sname: Имя самого близкого символа во время выполнения.

    • dli_saddr: Значение символа, указанного dli_sname.

    Если изображение, содержащее addr найден, но никакой близкий символ не найден, dli_sname и dli_saddr поля в Dl_info объект установлен в NULL. Близкий символ является символом в изображении, адрес которого равен или ниже, чем addr.

    См. также dlopen, dlsym.

    Доступность

    Доступный в OS X v10.3 и позже.

  • Закрывает динамическую библиотеку или пакет.

    Объявление

    Objective C

    int dlclose( void* handle);

    Параметры

    handle

    Дескриптор, полученный через вызов к dlopen.

    Возвращаемое значение

    Эта функция возвраты 0 когда успешный и значение кроме 0 когда неуспешный.

    Обсуждение

    Эта функция уменьшает подсчет ссылок изображения, на которое ссылаются handle. Когда подсчет ссылок для handle становится 0, подпрограммы завершения в изображении вызывают, и изображение удалено из адресного пространства текущего процесса. После той точки, handle представляется недопустимым.

    Если эта функция неуспешна, она устанавливает состояние ошибки, которое может быть запрошено с dlerror.

    См. также dlopen, dlerror.

    Доступность

    Доступный в OS X v10.3 и позже.

  • Предоставляет диагностическую информацию, соответствующую проблемам с вызовами к dlopen, dlsym, и dlclose в том же потоке.

    Объявление

    Objective C

    const char* dlerror( void);

    Возвращаемое значение

    Когда существует проблема сообщить, эта функция возвращает указатель на завершенную нулем строку, описывающую проблему. Иначе, эта функция возвраты NULL.

    Обсуждение

    Каждый вызов к dlerror сбрасывает его диагностический буфер. Если программа должна вести учет прошлых сообщений об ошибках, она должна сохранить их сама. Последующие вызовы к dlerror в том же потоке без вызовов к dlopen, dlsym, или dlclose, возвратиться NULL.

    См. также dlopen, dlsym, dlclose.

    Доступность

    Доступный в OS X v10.3 и позже.

  • Загрузки и ссылки динамическая библиотека или пакет.

    Объявление

    Objective C

    void* dlopen( const char* path, int mode);

    Параметры

    path

    Путь к изображению для открытия.

    mode

    Когда внешние символы загруженного изображения связываются с их определениями в зависимых библиотеках (ленивый или во время загрузки) и видимость экспортируемых символов изображения (глобальная переменная или локальные), указывает. Значение этого параметра составлено осуществлением операции ИЛИ одно обязательное значение поведения с одним значением спецификации видимости.

    Следующие значения указывают обязательное поведение:

    • RTLD_LAZY (значение по умолчанию): Каждая внешняя ссылка символа связывается в первый раз, когда она используется.

    • RTLD_NOW: Все внешние ссылки символа сразу связываются.

    Следующие значения указывают внешнюю видимость символа:

    • RTLD_GLOBAL (значение по умолчанию): экспортируемые символы загруженного изображения доступны любым изображениям, использующим плоское пространство имен или для вызовов к dlsym при использовании специального дескриптора (см. dlsym для подробных данных).

    • RTLD_LOCAL: Экспортируемые символы загруженного изображения обычно скрыты. Они доступны только dlsym вызовы, использующие дескриптор, возвращенный этой функцией.

    Возвращаемое значение

    Дескриптор, который может привыкнуть с вызовами к dlsym и dlclose.

    Обсуждение

    Эта функция исследует Мужественный файл, указанный path. Если изображение совместимо с текущим процессом и не было уже загружено в процесс, изображение загружается и соединяется. Если изображение содержит функции инициализатора, они выполняются перед этой функцией возвраты.

    Последующие вызовы к dlopen для загрузки того же изображения возвращают тот же дескриптор, но внутренняя ссылка значит дескриптор, постепенно увеличивается. Поэтому все dlopen вызовы должны быть сбалансированы с dlclose вызовы.

    Для эффективности, RTLD_LAZY обязательный режим предпочтен RTLD_NOW. Однако использование RTLD_NOW гарантирует, что любые неопределенные символы обнаружены во время вызова к dlopen.

    Динамический загрузчик смотрит по путям, указанным рядом переменных окружения, и в текущем каталоге процесса, когда это ищет библиотеку. Эти пути вызывают динамическими путями поиска загрузчика. Переменные окружения LD_LIBRARY_PATH, DYLD_LIBRARY_PATH, и DYLD_FALLBACK_LIBRARY_PATH. Значение по умолчанию DYLD_FALLBACK_LIBRARY_PATH (используемый, когда эта переменная не установлена), $HOME/lib;/usr/local/lib;/usr/lib.

    Порядок, в котором ищутся пути поиска, зависит от ли path имя файла (оно не содержит наклонную черту), или путь (оно содержит по крайней мере одну наклонную черту).

    Когда path имя файла, динамический загрузчик ищет библиотеку в путях поиска в следующем порядке:

    1. $LD_LIBRARY_PATH

    2. $DYLD_LIBRARY_PATH

    3. Рабочий каталог процесса

    4. $DYLD_FALLBACK_LIBRARY_PATH

    Когда path путь, динамический загрузчик ищет библиотеку в путях поиска в следующем порядке:

    1. $DYLD_LIBRARY_PATH

    2. Данный путь

    3. $DYLD_FALLBACK_LIBRARY_PATH использование имени файла

    Если эта функция не может открыть изображение, она устанавливает состояние ошибки, с которым можно получить доступ dlerror.

    См. также dlsym, dlclose, dlerror.

    Доступность

    Доступный в OS X v10.3 и позже.

  • Возвращает адрес символа.

    Объявление

    Objective C

    void* dlsym( void* handle, const char* symbol);

    Параметры

    handle

    Дескриптор, полученный вызовом к dlopen, или специальный дескриптор. Если дескриптор был получен вызовом к dlopen, это, должно быть, не было закрыто с вызовом для dlclose. Это возможные значения специального дескриптора: RTLD_DEFAULT, и RTLD_NEXT.

    symbol

    Завершенная нулем символьная строка, содержащая имя C разыскиваемого символа.

    Возвращаемое значение

    Когда успешный, эта функция возвращает адрес symbol. Иначе, это возвращает нулевого указателя.

    Обсуждение

    Значение дескриптора указывает то, что отображает эту функцию поиски для определения местоположения символа, указанного symbol параметр. Таблица 1 описывает возможные значения для handle параметр.

    Таблица 1Values для параметра дескриптора

    Значение дескриптора

    Поисковый объем

    dlopen дескриптор

    Изображение связалось с dlopen дескриптор.

    RTLD_DEFAULT

    Каждая зависимая библиотека или RTLD_GLOBAL– открытая библиотека в текущем процессе, в порядке они были загружены.

    RTLD_NEXT

    Зависимые библиотеки, загруженные после того, вызывающего эту функцию. Библиотеки открылись dlopen не ищутся.

    В отличие от этого в NS... функции, symbol параметр не требует, чтобы начальный символ подчеркивания был частью имени символа.

    Если эта функция неуспешна, она устанавливает состояние ошибки, которое может быть запрошено с dlerror.

    См. также dlopen, dlerror.

    Доступность

    Доступный в OS X v10.3 и позже.

Эти функции для загрузки Мужественных файлов пакета. Они объявляются в /usr/include/mach-o/dyld.h. Использованию этих функций обескураживают. Необходимо использовать более эффективные функции, описанные в Динамических Функциях Совместимости Загрузчика.

  • Создает ссылку изображения для данного Мужественного файла.

    Объявление

    Objective C

    NSObjectFileImageReturnCode NSCreateObjectFileImageFromFile( const char* pathName, NSObjectFileImage * objectFileImage);

    Параметры

    pathName

    Струна до. Передайте путь Мужественному исполняемому файлу. Вы, должно быть, ранее создали этот файл с -bundle опция компоновщика; иначе, эта функция возвращает ошибку.

    objectFileImage

    На выводе, указателе на NSObjectFileImage непрозрачная структура данных.

    Возвращаемое значение

    Посмотрите мужественные коды возврата создания изображений.

    Обсуждение

    Учитывая путь к Мужественной исполнимой программе, эта функция создает и возвращает a NSObjectFileImage ссылка. Текущая реализация работает только с пакетами, таким образом, необходимо создать Мужественный исполняемый файл с помощью -bundle опция компоновщика.

    Для мобильности и эффективности, рассмотреть использование dlopen.

  • Создает ссылку изображения для Мужественного файла в настоящее время в памяти.

    Объявление

    Objective C

    NSObjectFileImageReturnCode NSCreateObjectFileImageFromMemory( const void* address, size_t size, NSObjectFileImage * objectFileImage);

    Параметры

    address

    Указатель на блок памяти, содержащий Мужественное содержание файла.

    size

    Размер блока памяти, в байтах.

    objectFileImage

    На выводе, указателе на NSObjectFileImage непрозрачная структура данных.

    Возвращаемое значение

    Посмотрите мужественные коды возврата создания изображений.

    Обсуждение

    Данный подсказка к Мужественному файлу в памяти, эта функция создает и возвращается NSObjectFileImage ссылка. Текущая реализация работает только с пакетами, таким образом, необходимо создать Мужественный исполняемый файл с помощью -bundle опция компоновщика.

    Блок памяти это address точки к, должен быть выделен с vm_allocate (/usr/include/mach/vm_map.h).

    См. также NSDestroyObjectFileImage.

    Доступность

    Доступный в OS X v10.3 и позже.

  • Выпускает данное изображение объектного файла.

    Объявление

    Objective C

    bool NSDestroyObjectFileImage( NSObjectFileImage objectFileImage);

    Параметры

    objectFileImage

    Ссылка на объектный файл отображает для уничтожения.

    Возвращаемое значение

    TRUE если изображение было успешно уничтожено, FALSE если нет.

    Обсуждение

    Когда эта функция вызвана, динамические вызовы загрузчика vm_deallocate (/usr/include/mach/vm_map.h) на памяти, на которую указывают objectFileImage параметр.

    Для мобильности и эффективности, рассмотреть использование dlopen в сочетании с dlclose.

    См. также NSCreateObjectFileImageFromMemory.

  • Соединяет данное изображение объектного файла как модуль в текущую программу.

    Объявление

    Objective C

    NSModule NSLinkModule( NSObjectFileImage objectFileImage, const char* moduleName, uint32_t options);

    Параметры

    objectFileImage

    Ссылка изображения объектного файла. Передайте создаваемое использование ссылки NSCreateObjectFileImageFromFile функция.

    moduleName

    Струна до. Передайте абсолютный путь изображению объектного файла. GDB использует этот путь для получения отладочной информации от библиотеки.

    options

    unsigned long значение. Передайте один или больше следующих битовых масок или NSLINKMODULE_OPTION_NONE не указать опции:

    NSLINKMODULE_OPTION_BINDNOW

    Динамический компоновщик сразу связывает все неопределенные ссылки, вместо того, чтобы ожидать, пока фактически не используются ссылки. Все зависимые библиотеки также связываются.

    NSLINKMODULE_OPTION_PRIVATE

    Не добавляйте глобальные символы от модуля до глобального списка символа. Вместо этого необходимо использовать NSLookupSymbolInModule функция для получения символов из этого модуля.

    NSLINKMODULE_OPTION_RETURN_ON_ERROR

    Если ошибка происходит при привязке модуля возвратиться NULL. Можно тогда использовать функцию NSLinkEditError получать информацию об ошибке.

    Без этой опции, это вызовы функции linkEdit обработчик ошибок Вы установили использование NSInstallLinkEditErrorHandlers функция. Если Вы не установили обработчик ошибок редактирования ссылки, эта функция распечатывает сообщение к потоку стандартной погрешности и заставляет прерывание точки останова заканчивать программу.

    Возвращаемое значение

    Ссылка на соединенный модуль.

    Обсуждение

    Когда Вы вызываете эту функцию, все библиотеки, на которые ссылается данный модуль, добавляются к списку поиска библиотеки. Если Вы не передаете NSLINKMODULE_OPTION_PRIVATE, NSLinkModule добавляют все глобальные символы в модуле к глобальному списку символа.

    Для мобильности и эффективности, рассмотреть использование dlopen.

    Посмотрите Создающие Мужественные Файлы в Мужественных Темах Программирования для получения дополнительной информации о модулях.

  • Учитывая имя символа, возвращает соответствующий символ из глобальной таблицы символов.

    Объявление

    Objective C

    NSSymbol NSLookupAndBindSymbol( const char* symbolName);

    Параметры

    symbolName

    Указатель на струну до. Передайте имя символа, который Вы хотите найти.

    Возвращаемое значение

    Ссылка символа для требуемого символа.

    Обсуждение

    Осуждаемый в OS X v10.4. Использовать NSLookupSymbolInImage вместо этого.

    На ошибке при установке обработчика ошибок редактирования ссылки его вызывают; иначе, эта функция пишет сообщение об ошибке в дескриптор файла 2 (обычно поток стандартной погрешности, stderr) и заставляет прерывание точки останова заканчивать программу.

    Если Вы знаете имя библиотеки, в которой, вероятно, будет расположен символ, можно использовать NSLookupAndBindSymbolWithHint функция, которая может быть быстрее, чем эта функция. Необходимо использовать NSLookupSymbolInImage функция для выполнения двухуровневого поиска пространства имен.

  • Учитывая имя символа, возвращает соответствующий символ из глобальной таблицы символов.

    Объявление

    Objective C

    NSSymbol NSLookupAndBindSymbolWithHint( const char* symbolName, const char* libraryNameHint);

    Параметры

    symbolName

    Указатель на струну до. Передайте имя символа, который Вы хотите найти.

    libraryNameHint

    Указатель на струну до. Передайте любую часть имени библиотеки, в которой, вероятно, будет найден символ.

    Возвращаемое значение

    Ссылка символа для требуемого символа.

    Обсуждение

    На ошибке при установке обработчика ошибок редактирования ссылки его вызывают; иначе, эта функция пишет сообщение об ошибке в дескриптор файла 2 (обычно поток стандартной погрешности, stderr), и причины прерывание точки останова для окончания программы.

    Даже если пространство имен символа текущей программы имеет два уровня, Обратите внимание на то, что эта функция выполняет плоский поиск. Необходимо использовать NSLookupSymbolInImage функция для выполнения двухуровневого поиска пространства имен.

    Осуждаемый в OS X v10.4. Использовать NSLookupSymbolInImage вместо этого.

  • Учитывая ссылку на модули, возвращает ссылку на символ с именем.

    Объявление

    Objective C

    NSSymbol NSLookupSymbolInModule( NSModule module, const char* symbolName);

    Параметры

    module

    Ссылка на модули. Передайте модуль, содержащий символ.

    symbolname

    Указатель на струну до. Передайте имя символа для поиска.

    Возвращаемое значение

    Ссылка символа или NULL если не может быть найден символ.

    Обсуждение

    Для мобильности и эффективности, рассмотреть использование dlsym.

  • Возвращает имя данного модуля.

    Объявление

    Objective C

    const char* NSNameOfModule( NSModule module);

    Параметры

    module

    Ссылка на модули. Передайте модуль, имя которого Вы хотите получить.

    Возвращаемое значение

    Струна до, содержащая имя модуля. Строка принадлежит динамическому компоновщику, и Вы не должны освобождать ее.

    Обсуждение

    См. “Создающие Мужественные Файлы” в OS X Формат файла ABI Reference.for больше информации о модулях.

  • Возвраты TRUE если данный символ определяется в текущей программе.

    Объявление

    Objective C

    enum bool NSIsSymbolNameDefined ( const char* symbolName );

    Параметры

    symbolName

    Струна до. Передайте имя символа, состояние определения которого Вы хотите обнаружить.

    Возвращаемое значение

    TRUE когда символ определяется любым изображением, загруженным в текущем процессе; FALSE когда не может быть найден символ.

    Обсуждение

    Осуждаемый в OS X v10.4. Использовать NSLookupSymbolInImage вместо этого.

    Если Вы знаете имя библиотеки, в которой, вероятно, будет расположен символ, можно использовать NSIsSymbolNameDefinedWithHint функция, которая может быть быстрее, чем эта функция. Необходимо использовать NSIsSymbolNameDefinedInImage функция для выполнения двухуровневого поиска пространства имен.

  • Возвраты TRUE если данное изображение содержит именованный символ.

    Объявление

    Objective C

    enum bool NSIsSymbolNameDefinedInImage ( const struct mach_header * image , const char* symbolName );

    Параметры

    image

    Указатель на a mach_header (Мужественная Архитектура среды выполнения) структура данных.

    symbolName

    Струна до. Передайте имя символа.

    Возвращаемое значение

    TRUE если изображение содержит символ с именем, false иначе.

    Обсуждение

    Осуждаемый в OS X v10.4. Использовать NSLookupSymbolInImage вместо этого.

  • Возвраты TRUE если данный символ определяется в текущей программе с подсказкой, указывающей имя совместно используемой библиотеки, вероятно, для содержания символа.

    Объявление

    Objective C

    enum bool NSIsSymbolNameDefinedWithHint ( const char* symbolName , const char* libraryNameHint );

    Параметры

    symbolName

    Струна до. Передайте имя символа, состояние определения которого Вы хотите обнаружить.

    libraryNameHint

    Струна до. Передайте любую часть имени совместно используемой библиотеки, которая, вероятно, будет содержать символ. Это ищет только соответствующую первую совместно используемую библиотеку.

    Возвращаемое значение

    TRUE когда символ определяется любым изображением, загруженным в текущем процессе; FALSE когда не может быть найден символ.

    Обсуждение

    Осуждаемый в OS X v10.4. Использовать NSLookupSymbolInImage вместо этого.

    Имя библиотеки, которое Вы передаете этой функции, позволяет ей определять позицию в списке загруженных символов, с которых можно запустить поиск. В значительно более быстрое время поиска поиска это может закончиться, чем возможное использование NSIsSymbolNameDefined.

    Даже если пространство имен символа текущей программы имеет два уровня, Обратите внимание на то, что эта функция выполняет плоский поиск. Необходимо использовать NSIsSymbolNameDefinedInImage функция для выполнения двухуровневого поиска пространства имен.

  • Возвращает ссылку на модуль, содержащий данный символ.

    Объявление

    Objective C

    NSModule NSModuleForSymbol( NSSymbol symbol);

    Параметры

    symbol

    Ссылка символа. Передайте символ, модуль которого Вы хотите получить.

    Возвращаемое значение

    Ссылка на модуль, содержащий данный символ.

  • Расцепляет данный модуль из текущей программы.

    Объявление

    Objective C

    bool NSUnLinkModule( NSModule module, uint32_t options);

    Параметры

    module

    Ссылка на модули. Передайте ссылку на модуль, что Вы ранее соединили использование NSLinkModule функция.

    options

    unsigned long значение. Можно указать один или больше следующих битовых масок:

    NSUNLINKMODULE_OPTION_NONE

    Расцепите модуль и освободите память, которую он занимает.

    NSUNLINKMODULE_OPTION_KEEP_MEMORY_MAPPED

    Расцепите модуль, но не освобождайте память, которую он занимает. Адреса, находящиеся в модуле, остаются допустимыми. Вы не можете не отобразить эту память позже; когда процесс выходит или завершается, это выпущено.

    NSUNLINKMODULE_OPTION_RESET_LAZY_REFERENCES

    Расцепите модуль и сбросьте ленивые ссылки от других модулей, связывающихся с модулем. Можно тогда соединить новый модуль, реализующий те же символы, и ссылки вызова функции связываются с новым модулем, когда получено доступ.

    Обсуждение

    Для мобильности и эффективности, рассмотреть использование dlopen в проводимости с dlclose.

    Посмотрите Создающие Мужественные Файлы в Мужественных Темах Программирования для получения дополнительной информации о модулях.

    Специальные замечания

    В OS X v10.2 и позже, NSUNLINKMODULE_OPTION_RESET_LAZY_REFERENCES может использоваться только с PowerPC исполнимые программы CPU.

Функции, описанные в этом разделе, объявляются в /usr/include/mach-o/dyld.h. Использованию этих функций обескураживают. Необходимо использовать более эффективные функции, описанные в Динамических Функциях Совместимости Загрузчика.

  • Добавляет указанное Мужественное изображение к в настоящее время рабочему процессу.

    Объявление

    Objective C

    const struct mach_header* NSAddImage( const char* image_name, uint32_t options);

    Параметры

    image_name

    Указатель на струну до. Передайте путь совместно используемой библиотеке по диску. Для лучшей производительности укажите полный путь совместно используемой библиотеки — не символьная ссылка.

    options

    Немного маски. Передайте один или больше следующих опций или NSADDIMAGE_OPTION_NONE не указать опции:

    NSADDIMAGE_OPTION_RETURN_ON_ERROR

    Если ошибка происходит, и Вы указали эту опцию, эта функция возвраты NULL. Можно тогда использовать функцию NSLinkEditError получать информацию об ошибке.

    Если ошибка происходит, и Вы не указали эту опцию, это вызовы функции linkEdit обработчик ошибок Вы установили использование NSInstallLinkEditErrorHandlers функция. Если Вы не установили обработчик ошибок редактирования ссылки, эта функция распечатывает ошибку к stderr и заставляет прерывание точки останова заканчивать программу.

    NSADDIMAGE_OPTION_WITH_SEARCHING

    При использовании этой опции, image_name переданный для библиотеки и всех ее зависимых затронут различным dyld переменные окружения, как будто эта библиотека была соединена в программу.

    NSADDIMAGE_OPTION_RETURN_ONLY_IF_LOADED

    При использовании этой опции, эта функция возвраты NULL если совместно используемая библиотека не была загружена до вызова в эту функцию.

    Возвращаемое значение

    Указатель на a mach_header (“OS X ABI Мужественная Ссылка Формата файла”) структура данных. Это - указатель на запуск загруженного изображения.

    Обсуждение

    Эта функция загружает совместно используемую библиотеку, указанную image_name в текущий процесс, возвращая указатель на mach_header структура данных загруженного изображения. Любые библиотеки, от которых зависит указанная библиотека, также загружаются.

    linkEdit обработчик ошибок документируется в NSModule(3) страница справочника.

    Для мобильности и эффективности, рассмотреть использование dlopen.

    Доступность

    Доступный в OS X v10.1 и позже.

  • Добавляет динамическая совместно используемая библиотека к поисковому списку.

    Объявление

    Objective C

    extern bool NSAddLibrary( const char* pathName);

    Параметры

    pathName

    Струна до. Передайте имя динамической совместно используемой библиотеки.

    Возвращаемое значение

    TRUE если библиотека была успешно добавлена к поисковому списку, FALSE иначе.

    Обсуждение

    Осуждаемый в OS X v10.4. Использовать NSAddImage вместо этого.

    Специальные замечания

    Вместо того, чтобы использовать эту функцию, необходимо использовать NSAddImage с NSADDIMAGE_OPTION_NONE опция.

  • Добавляет динамическая совместно используемая библиотека к поисковому списку — использование различного dyld переменные окружения — как будто библиотека была соединена в программу.

    Объявление

    Objective C

    extern bool NSAddLibraryWithSearching( const char* pathName);

    Параметры

    pathName

    Струна до. Передайте имя динамической совместно используемой библиотеки.

    Возвращаемое значение

    TRUE если библиотека была успешно добавлена к поисковому списку, FALSE иначе.

    Обсуждение

    Осуждаемый в OS X v10.4. Использовать NSAddImage вместо этого.

    Специальные замечания

    Вместо того, чтобы использовать эту функцию, необходимо использовать NSAddImage с NSADDIMAGE_OPTION_WITH_SEARCHING опция.

  • Возвращает адрес в адресном пространстве программы данных, представленных данным символом. Данные могут быть переменной, константой, или первой инструкцией функции.

    Объявление

    Objective C

    void* NSAddressOfSymbol( NSSymbol symbol);

    Параметры

    symbol

    Ссылка символа. Передайте символ, адрес которого Вы хотите получить.

    Возвращаемое значение

    Указатель на данные представлен данным символом.

    Обсуждение

    Для мобильности и эффективности, рассмотреть использование dlsym.

  • Возвращает имя библиотеки, содержащей данный модуль.

    Объявление

    Objective C

    const char* NSLibraryNameOfModule( NSModule module);

    Параметры

    module

    Ссылка на модули. Передайте модуль, имя библиотеки которого Вы хотите получить.

    Возвращаемое значение

    Струна до, содержащая имя библиотеки, содержащей модуль. Строка принадлежит динамическому компоновщику, и Вы не должны освобождать ее.

    Обсуждение

    Посмотрите Создающие Мужественные Файлы в Мужественных Темах Программирования для получения дополнительной информации о модулях.

  • Возвращает ссылку на указанный символ от указанного изображения.

    Объявление

    Objective C

    NSSymbol NSLookupSymbolInImage( const struct mach_header * image, const char* symbolName uint32_t options);

    Параметры

    image

    Указатель на a mach_header структура данных. Передайте указатель на запуск изображения, содержащего символ. Можно получить этот указатель от совместно используемого использования имени библиотеки NSAddImage.

    Если процесс не имеет двухуровневого пространства имен, NSLookupSymbolInImage игнорирует этот параметр и ищет символ в глобальной таблице символов.

    symbolName

    Указатель на струну до. Передайте имя символа, который Вы хотите найти.

    options

    Немного маски. Передайте любую из следующих опций:

    NSLOOKUPSYMBOLINIMAGE_OPTION_BIND

    Свяжите неленивые символы модуля в определяющем изображении symbolName и позвольте всем ленивым символам в модуле быть связанными на первом вызове. Необходимо передать эту опцию, когда Вы ожидаете, что модуль свяжет без ошибок (например, библиотека, предоставленная системой). Если, позже, Вы вызываете ленивый символ, и ленивому символу не удается связать, время выполнения вызывает обработчик ошибок редактирования ссылки, Вы установили использование NSInstallLinkEditErrorHandlers функция.

    Если нет никакого установленного обработчика ошибок редактирования ссылки, время выполнения распечатывает сообщение к потоку стандартной погрешности и заставляет прерывание точки останова заканчивать программу.

    NSLOOKUPSYMBOLINIMAGE_OPTION_BIND_NOW

    Свяжите все неленивые и ленивые символы модуля в изображении, определяющем имя символа, и свяжите символы в зависимых библиотеках по мере необходимости.

    Передайте эту опцию для библиотеки, которая, как могли бы ожидать, не свяжет без ошибок, но это соединяется против только предоставленных систему библиотек, которые, как самостоятельно ожидают, свяжут без любых ошибок.

    NSLOOKUPSYMBOLINIMAGE_OPTION_BIND_FULLY

    Свяжите все символы определяющего модуля symbolName и все зависимые символы всех необходимых библиотек.

    Поскольку может требоваться много времени, чтобы полностью связать изображение, необходимо передать эту опцию только для библиотек, которые не могут связать другие символы, один раз выполняемые, такие как код, реализующий сигнальные обработчики.

    NSLOOKUPSYMBOLINIMAGE_OPTION_RETURN_ON_ERROR

    Возвратиться NULL если не может быть связан символ.

    Возвращаемое значение

    Ссылка символа для требуемого символа, или NULL если символ не может быть найден, и Вы передали опцию NSLOOKUPSYMBOLINIMAGE_OPTION_RETURN_ON_ERROR.

    Обсуждение

    На ошибке при установке обработчика ошибок редактирования ссылки его вызывают; иначе, эта функция пишет сообщение об ошибке в дескриптор файла 2 (обычно поток стандартной погрешности, stderr) и заставляет прерывание точки останова заканчивать программу.

    Для мобильности и эффективности, рассмотреть использование dlsym.

    Доступность

    Доступный в OS X v10.1 и позже.

  • Возвращает имя данного символа.

    Объявление

    Objective C

    const char* NSNameOfSymbol( NSSymbol symbol);

    Параметры

    symbol

    Ссылка символа. Передайте символ, имя которого Вы хотите получить.

    Возвращаемое значение

    Указатель на струну до, содержащую имя ссылки. Динамическому компоновщику принадлежит эта строка, и Вы не должны освобождать ее.

Функции, описанные в этом разделе, объявляются в /usr/include/mach-o/getsect.h.

  • Возвращает структуру данных, представляющую раздел Мужественного файла, содержащего основную исполняемую программу текущего процесса.

    Объявление

    Objective C

    const struct section* getsectbyname( const char* segname, const char* sectname);

    Параметры

    segname

    Указатель на струну до. Передайте имя сегмента, в котором находится раздел.

    sectname

    Указатель на струну до. Передайте имя раздела.

    Возвращаемое значение

    Указатель на a section (Мужественная Ссылка Формата файла) структура данных.

  • Возвращает структуру данных, представляющую раздел указанного 32-разрядного Мужественного файла.

    Объявление

    Objective C

    const struct section* getsectbynamefromheader( const struct mach_header * mhp, const char* segname, const char* sectname);

    Параметры

    mhp

    Указатель на a mach_header структура данных. Передайте mach_header из файла, содержащего данные раздела, Вы хотите получить.

    segname

    Указатель на струну до. Передайте имя сегмента, в котором находится раздел.

    sectname

    Указатель на струну до. Передайте имя раздела.

    Возвращаемое значение

    Указатель на a section структура данных.

  • Возвращает структуру данных, представляющую раздел указанного 64-разрядного Мужественного файла.

    Объявление

    Objective C

    const struct section_64* getsectbynamefromheader( const struct mach_header_64 * mhp, const char* segname, const char* sectname);

    Параметры

    mhp

    Указатель на a mach_header_64 структура данных. Передайте mach_header из файла, содержащего данные раздела, Вы хотите получить.

    segname

    Указатель на струну до. Передайте имя сегмента, в котором находится раздел.

    sectname

    Указатель на струну до. Передайте имя раздела.

    Возвращаемое значение

    Указатель на a section_64 структура данных.

  • Возвращает данные для раздела от Мужественного файла основной исполняемой программы текущего процесса.

    Объявление

    Objective C

    char* getsectdata( const char* segname, const char* sectname, unsigned long* size);

    Параметры

    segname

    Указатель на струну до. Передайте имя сегмента, в котором находится раздел.

    sectname

    Указатель на струну до. Передайте имя раздела.

    size

    Указатель на длинное целое. На выводе, содержит длину (в байтах) раздела.

    Возвращаемое значение

    Указатель на данные раздела.

  • Возвращает данные для раздела Мужественного файла, содержащего указанную платформу.

    Объявление

    Objective C

    char* getsectdatafromFramework( const char* FrameworkName, const char* segname, const char* sectname, unsigned long* size);

    Параметры

    FrameworkName

    Указатель на струну до. Передайте имя платформы, в которой находится раздел.

    segname

    Указатель на струну до. Передайте имя сегмента, в котором находится раздел.

    sectname

    Указатель на струну до. Передайте имя раздела.

    size

    Указатель на длинное целое. На выводе, содержит длину (в байтах) раздела.

    Возвращаемое значение

    Указатель на данные раздела. Если Мужественный файл является динамической совместно используемой библиотекой (MH_DYLIB), необходимо добавить, что понижение виртуальной памяти составляет этот адрес для получения истинного адреса данных. Посмотрите _dyld_get_image_vmaddr_slide для получения дополнительной информации.

  • Возвращает данные для раздела указанного 32-разрядного Мужественного файла.

    Объявление

    Objective C

    char* getsectdatafromheader( const struct mach_header * mhp, const char* segname, const char* sectname, uint32_t* size);

    Параметры

    mhp

    Указатель на a mach_header структура данных. Передайте mach_header из файла, содержащего данные раздела, Вы хотите получить.

    segname

    Указатель на струну до. Передайте имя сегмента, в котором находится раздел.

    sectname

    Указатель на струну до. Передайте имя раздела.

    size

    Указатель на длинное целое. На выводе, содержит длину (в байтах) раздела.

    Возвращаемое значение

    Указатель на данные раздела. Если Мужественный файл является динамической совместно используемой библиотекой (MH_DYLIB), необходимо добавить, что понижение виртуальной памяти составляет этот адрес для получения истинного адреса данных. Посмотрите _dyld_get_image_vmaddr_slide для получения дополнительной информации.

  • Возвращает данные для раздела указанного 64-разрядного Мужественного файла.

    Объявление

    Objective C

    char* getsectdatafromheader( const struct mach_header_64 * mhp, const char* segname, const char* sectname, uint64_t* size);

    Параметры

    mhp

    Указатель на a mach_header_64 структура данных. Передайте mach_header из файла, содержащего данные раздела, Вы хотите получить.

    segname

    Указатель на струну до. Передайте имя сегмента, в котором находится раздел.

    sectname

    Указатель на струну до. Передайте имя раздела.

    size

    Указатель на длинное целое. На выводе, содержит длину (в байтах) раздела.

    Возвращаемое значение

    Указатель на данные раздела. Если Мужественный файл является динамической совместно используемой библиотекой (MH_DYLIB), необходимо добавить, что понижение виртуальной памяти составляет этот адрес для получения истинного адреса данных. Посмотрите _dyld_get_image_vmaddr_slide для получения дополнительной информации.

  • Возвращает структуру данных, представляющую сегмент Мужественного файла, содержащего основную исполняемую программу текущего процесса.

    Объявление

    Objective C

    const struct segment_command* getsegbyname( const char* segname);

    Параметры

    segname

    Указатель на струну до. Передайте имя сегмента.

    Возвращаемое значение

    Указатель на a segment_command (Мужественная Ссылка Формата файла) структура данных.

  • Находит изображение, содержащее указанный адрес, и полностью связывает все модули в нем.

    Объявление

    Objective C

    bool _dyld_bind_fully_image_containing_address( const void* address);

    Параметры

    address

    Указатель на адрес расположился где-нибудь в загруженном изображении.

    Возвращаемое значение

    Булево значение. Если true, адрес находится где-нибудь в загруженном изображении, и таким образом, _dyld_bind_fully_image_containing_address опробованный для привязки того изображения. Если false, адрес не находится в загруженном изображении, и таким образом, _dyld_bind_fully_image_containing_address ничего не сделал.

    Обсуждение

    Когда у Вас есть адрес функции, но не имя символа, можно использовать эту функцию для привязки ошибки, вручающей код как сигнальные обработчики. Это может связать больше символов, чем фактически необходимо.

    Если изображение, содержащее адрес, является плоским изображением пространства имен, многократно определенные ошибки могут произойти, даже если действительно не используются символы. Об ошибках в привязке сообщают через нормальные механизмы сообщения об ошибке.

  • Связывает модуль, содержащий данный адрес Objective C.

    Объявление

    Objective C

    void _dyld_bind_objc_module( const void* objc_module);

    Параметры

    objc_module

    Указатель. Передайте любой адрес, находящийся в __OBJC,__module раздел загруженного Мужественного файла.

    Обсуждение

    Эта функция используется библиотекой времени выполнения Objective C.

  • Получает адрес реализации a dyld библиотечная функция.

    Объявление

    Objective C

    int _dyld_func_lookup( const char* dyld_func_name, void** address);

    Параметры

    dyld_func_name

    Указатель на струну до. Передайте имя a dyld библиотечная функция.

    address

    Указатель на указатель. На выводе точки к адресу функции, если функция найдена, иначе значение, не определены.

    Возвращаемое значение

    Целочисленное значение. Ненулевой, если была найдена функция. Нуль, если не была найдена функция.

    Обсуждение

    Эта функция используется кодом библиотеки, реализующим dyld функции.

  • Возвращает структуру данных для заголовка указанного изображения. Изображение указано индексом в список изображений, сохраняемых dyld для текущего процесса.

    Объявление

    Objective C

    const struct mach_header* _dyld_get_image_header( uint32_t image_index);

    Параметры

    image_index

    Длинное целое. Передайте основанный на нуле индекс, указывающий позицию изображения в списке изображений, загруженных в адресное пространство текущего процесса.

    Возвращаемое значение

    Указатель на mach_header структура данных указанного изображения. Если image_index больше, чем число загруженных изображений, этот указатель является нулем.

  • Получает имя изображения.

    Объявление

    Objective C

    const char* _dyld_get_image_name( uint32_t image_index);

    Параметры

    image_index

    Длинное целое. Передайте основанный на нуле индекс, указывающий позицию изображения в списке изображений, загруженных в адресное пространство текущего процесса.

    Возвращаемое значение

    Указатель на струну до. Если image_index больше, чем число загруженных изображений, указатель строки является нулем.

    Обсуждение

    Возвращает имя изображения, расположенного в данном индексе в глобальный список изображений.

  • Возвращает сумму понижения адреса виртуальной памяти изображения.

    Объявление

    Objective C

    intptr_t _dyld_get_image_vmaddr_slide( uint32_t image_index);

    Параметры

    image_index

    Длинное целое. Передайте основанный на нуле индекс, указывающий позицию изображения в списке изображений, загруженных в адресное пространство текущего процесса.

    Возвращаемое значение

    Если image_index больше, чем или равен значению, возвращенному _dyld_image_count, нуль. Иначе, vmaddr_slide значение для указанного изображения.

    Обсуждение

    Когда динамический компоновщик загружает изображение, изображение должно быть отображено в виртуальное адресное пространство процесса в незанятом адресе. Динамический компоновщик выполняет это путем добавления значения — суммы понижения виртуальной памяти — к базовому адресу изображения.

  • Получает размер и стартовое расположение модуля Objective C.

    Объявление

    Objective C

    void _dyld_get_objc_module_sect_for_module( NSModule module, void** objc_module, size_t* size);

    Параметры

    module

    Ссылка на модули от изображения.

    objc_modulet

    Указатель на указатель. На выводе, содержит указатель на запуск __OBJC,__module раздел для указанного модуля.

    size

    Указатель на длинное целое. На выводе длинное целое содержит значение, указывающее размер выходного модуля.

    Обсуждение

    Эта функция используется библиотекой времени выполнения Objective C.

  • Возвращает число изображений это dyld отобразился в адресное пространство текущего процесса.

    Объявление

    Objective C

    uint32_t _dyld_image_count(void);

    Возвращаемое значение

    Длинное целое, содержащее число изображений это dyld отобразился в адресное пространство текущего процесса.

    Обсуждение

    Эта функция предоставляет Вам количество числа изображений в списке изображений. Можно использовать это число для итерации изображений, загруженных в адресное пространство текущего процесса, с помощью функций такой как _dyld_get_image_header и _dyld_get_image_name.

  • Возвраты, является ли указанный адрес в каком-либо загруженном изображении.

    Объявление

    Objective C

    bool _dyld_image_containing_address( const void* address);

    Параметры

    address

    Длинное целое без знака. Передайте адрес, о котором Вы хотите получить состояние.

    Возвращаемое значение

    TRUE если адрес расположен в изображении, загруженном динамическим компоновщиком, FALSE иначе.

  • Возвраты, смог ли динамический компоновщик запустить программу с предобязательной включенной оптимизацией.

    Объявление

    Objective C

    bool _dyld_launched_prebound(void);

    Возвращаемое значение

    Булево значение. TRUE если программа была запущена успешно с помощью предсвязанного состояния; FALSE если бы или программа не была предварительно связана или предварительная привязка, то не мог бы использоваться по некоторым причинам.

    Обсуждение

    Если программа не была успешно запущена с предобязательной оптимизацией, компоновщик не предварительно связывал программу, адреса некоторых перекрытых изображений и таким образом, компоновщик не мог использовать предсвязанные адреса, или некоторая другая проблема произошла. В любом случае программа продолжает запускаться, но она работает медленнее, чем с предварительной привязкой включенного.

  • Находит, что данный символ называет, и связывает его в программу.

    Объявление

    Objective C

    void _dyld_lookup_and_bind( const char* symbol_name, void ** address NSModule * module);

    Параметры

    symbol_name

    Указатель на струну до. Укажите имя символа для привязки.

    address

    Указатель на указатель. На выводе, точках к адресу символа, указанного symbol_name. Этот параметр является дополнительным; передача NULL для этого указателя на вводе, если Вы не хотите получать эти данные.

    module

    Указатель на указатель модуля. На выводе указатель модуля содержит модуль символа, указанного symbol_name. Этот параметр является дополнительным; указать NULL для этого указателя на вводе, если Вы не хотите получать эти данные.

    Обсуждение

    Осуждаемый в OS X v10.4. Использовать NSLookupSymbolInImage вместо этого.

    Можно использовать _dyld_lookup_and_bind для нахождения данного имени символа в глобальном поиске перечисляют и связывают его (и все другие определенные символы в том же модуле) в программу.

    Если программа предварительно связывается, и Вы знаете имя библиотеки, содержащей символ, рассмотреть использование _dyld_lookup_and_bind_with_hint вместо этого.

  • Находит модуль, содержащий указанный символ, и полностью связывает все ссылки символа в нем.

    Объявление

    Objective C

    void _dyld_lookup_and_bind_fully( const char* symbol_name, void** address, NSModule * module);

    Параметры

    symbol_name

    Указатель на струну до. Укажите имя символа для привязки.

    address

    Указатель на указатель. На выводе, точках к адресу указанного символа.

    module

    Указатель на указатель. На выводе указатель установлен в адрес модуля, в котором находится указанный символ.

    Обсуждение

    Можно использовать эту функцию для привязки модулей, содержащих сигнальные обработчики или другой код обработки ошибок, который не может быть инициализирован лениво.

    Об ошибках в привязке сообщают через нормальные механизмы.

  • Получает и связывает модуль Objective C, содержащий указанный символ.

    Объявление

    Objective C

    void _dyld_lookup_and_bind_objc( const char* symbol_name, void** address, NSModule * module);

    Параметры

    symbol_name

    Указатель на струну до. Укажите имя символа для привязки, такой как .objc_class_name_Foo.

    address

    Указатель на указатель. На выводе, точках к адресу символа, указанного symbol_name. Этот параметр является дополнительным; передача NULL для этого указателя на вводе, если Вы не хотите получать эти данные.

    module

    Указатель на указатель модуля. На выводе указатель модуля содержит модуль символа, указанного symbol_name. Этот параметр является дополнительным; указать NULL для этого указателя на вводе, если Вы не хотите получать эти данные.

    Обсуждение

    Эта подпрограмма используется библиотекой времени выполнения Objective C. Это выполняет ту же функцию как _dyld_lookup_and_bind если символ находится в связанном модуле, но, по причинам производительности, не обновляет указатели символа. Символ Objective C такой как .objc_class_name_Object никогда не используется указателем символа, и обновление указателей символа является относительно дорогой работой; таким образом, это обеспечивает путь в течение времени выполнения Objective C для предотвращения тех издержек.

  • Находит, что данный символ называет, и обязывает его в программу, с подсказкой позволять dyld для ускорения символа ищут предсвязанную программу.

    Объявление

    Objective C

    void _dyld_lookup_and_bind_with_hint( const char* symbol_name, const char* library_name_hint, void** address, NSModule * module);

    Параметры

    symbol_name

    Указатель на струну до. Укажите имя символа для привязки.

    library_name_hint

    Указатель на струну до. Укажите имя библиотеки, в которой, вероятно, расположен символ. Динамический компоновщик сравнивает это имя с фактическими именами установки библиотеки с помощью функции стандартной библиотеки для C strstr.

    address

    Указатель на указатель. На выводе, точках к адресу символа, указанного symbol_name. Этот параметр является дополнительным; передача NULL для этого указателя на вводе, если Вы не хотите получать эти данные.

    module

    Указатель на указатель модуля. На выводе указатель модуля содержит модуль символа, указанного symbol_name. Этот параметр является дополнительным; указать NULL для этого указателя на вводе, если Вы не хотите получать эти данные.

    Обсуждение

    Осуждаемый в OS X v10.4. Использовать NSLookupSymbolInImage вместо этого.

    Можно использовать _dyld_lookup_and_bind_with_hint чтобы быстро найти данный символ называют в списке глобального поиска предсвязанной программы и связать символ (и все другие определенные символы в том же модуле) в программу.

  • Эта функция используется профильной подпрограммой moninit позволить изображениям кроме основной исполнимой программы профилироваться.

    Объявление

    Objective C

    void _dyld_moninit( void (*monaddition)( char* lowpc, char* highpc);

    Параметры

    monaddition

    Указатель на функцию обратного вызова. Когда изображение сначала отображается в, обратный вызов вызывают.

    Обсуждение

    Эта функция обычно вызывается профильным временем выполнения (в частности, от moninit функция). Это документируется здесь для полноты. См. страницу справочника для moninit и monaddtion для получения дополнительной информации.

  • Указывает, загружается ли динамический компоновщик в текущую программу

    Объявление

    Objective C

    bool _dyld_present (void);

    Возвращаемое значение

    Булево значение, указывающее присутствие dyld. Это значение FALSE если dyld не загружается в текущем процессе, и TRUE если dyld загружается в текущем процессе.

  • Регистрирует функцию, которую вызовет к динамическое время выполнения компоновщика, когда изображение добавляется к программе.

    Объявление

    Objective C

    void _dyld_register_func_for_add_image( void (*func)(struct mach_header * mh, intptr_t vmaddr_slide));

    Параметры

    func

    Указатель на функцию обратного вызова, принимающую указатель на a mach_header структура данных и виртуальная память двигают сумму. Сумма понижения виртуальной памяти указывает различие между адресом, в котором изображение было соединено и адрес, в котором загружается изображение.

    Обсуждение

    Когда Вы вызываете _dyld_register_func_for_add_image, динамическое время выполнения компоновщика вызывает указанный обратный вызов (func) один раз для каждого из изображений, в настоящее время загружающихся в программу. Когда новое изображение добавляется к программе, Ваш обратный вызов вызывают снова с mach_header для нового изображения и виртуальной памяти двигают сумму нового изображения.

    Когда новые изображения добавляются к программе, Вы могли бы использовать это, например, в реализации системы во время выполнения, такой как время выполнения Objective C, для обнаружения.

  • Регистрирует функцию, которую вызовет к динамическое время выполнения компоновщика, когда модуль соединяется в программу.

    Объявление

    Objective C

    void _dyld_register_func_for_link_module( void (*func)( NSModule module));

    Параметры

    func

    Указатель на обратный вызов, принимающий ссылку на модули.

    Обсуждение

    Когда Вы вызываете _dyld_register_func_for_link_module, динамическое время выполнения компоновщика вызывает указанный обратный вызов (func) один раз для каждого модуля, в настоящее время соединяющегося в программу. Когда новый модуль соединяется в программу, func обратный вызов вызывают снова для того модуля.

  • Регистрирует функцию, которую вызовет к динамическое время выполнения компоновщика, когда изображение удалено из программы.

    Объявление

    Objective C

    void _dyld_register_func_for_remove_image( void (*func) (struct mach_header * mh), intptr_t vmaddr_slide) );

    Параметры

    func

    Указатель на функцию обратного вызова, принимающую указатель на a mach_header структура данных и виртуальная память двигают сумму. Сумма понижения виртуальной памяти указывает различие между адресом, в котором изображение было соединено и адрес, в котором загружается изображение.

  • Код связующего звена ассемблера, выполняющий привязку для ленивого функционального символа.

    Объявление

    Objective C

    .private_extern dyld_stub_binding_helper

    Параметры

    PowerPC: r11 x86: stack-based parameter

    Указатель на ленивый указатель символа для функции, которая будет связана.

    Обсуждение

    dyld обязательный помощник тупика является функцией связующего звена, помогающей динамическому компоновщику в ленивой привязке внешней функции. Когда компилятор видит вызов к внешней функции, он генерирует тупик символа и ленивый указатель для функции. На сайте вызова компилятор генерирует вызов к тупику символа. Тупик символа является последовательностью кода, загружающего ленивый указатель и переходы к нему. Первоначально, последовательность кода и содержание ленивого указателя вызывают эту функцию, вызывающую динамического компоновщика для привязки символа. После того, как символ связывается, ленивый указатель установлен в адрес символа, и символ достигнут непосредственно путем перехода к ленивому указателю.

    После того, потому что адрес был изменен на исполнительный адрес функции, всех вызовов к внешнему вызову функции внешняя функция.

    На записи эта функция принимает адрес ленивого указателя символа. На выходе значение ленивого указателя символа установлено в адрес внешней функции. dyld тупик обязательный помощник является базируемым ассемблером и не использует стандартные соглашения о вызовах, и как таковой, расположение параметров являются определенными для каждой архитектуры ЦП. На PowerPC адрес ленивого указателя символа, как ожидают, будет в GPR11. На x86 адрес ленивого указателя символа должен быть спешившим штабель.

    Эта функция расположена в файлах запуска во время выполнения, статически соединяющихся в изображение. Для исполнимых программ файл /lib/crt1.o. Для пакетов это /lib/bundle1.o, и для совместно используемых библиотек, это /lib/dylib1.o.

Константы

  • Потенциальные возвращаемые значения при создании Мужественного изображения.

    Объявление

    Objective C

    typedef enum { NSObjectFileImageFailure, NSObjectFileImageSuccess, NSObjectFileImageInappropriateFile, NSObjectFileImageArch, NSObjectFileImageFormat, NSObjectFileImageAccess } NSObjectFileImageReturnCode;

    Константы

    • NSObjectFileImageSuccess

      NSObjectFileImageSuccess

      Работа создания изображений была завершена успешно.

    • NSObjectFileImageFailure

      NSObjectFileImageFailure

      Работа создания изображений не была успешно завершена.

      Когда это значение возвращается, сообщение об ошибке распечатано к потоку стандартной погрешности.

    • NSObjectFileImageInappropriateFile

      NSObjectFileImageInappropriateFile

      Мужественный файл не имеет типа, на который может работать вызванная функция.

    • NSObjectFileImageArch

      NSObjectFileImageArch

      Указанный Мужественный файл для различной архитектуры ЦП.

    • NSObjectFileImageFormat

      NSObjectFileImageFormat

      Указанный файл или блок памяти, кажется, не указывают на Мужественный файл.

    • NSObjectFileImageAccess

      NSObjectFileImageAccess

      Права доступа для указанного файла не разрешают создание изображения.

    Обсуждение

    Эти возвращаемые значения возвращаются из NSCreateObjectFileImageFromFile и NSCreateObjectFileImageFromMemory.