Spec-Zone.ru › Julia 0.6

Динамический линкер

Имена в Base.Libdl не экспортируются и должны вызываться, например, как Libdl.dlopen().

Base.Libdl.dlopenФункция

dlopen(libfile::AbstractString [, flags::Integer])

Загрузка разделяемой библиотеки, возвращающая неявное имя.

Расширение, заданное константой dlext (.so, .dll, или .dylib), может быть опущено из строки libfile, так как оно автоматически добавляется при необходимости. Если libfile не является абсолютным путем, то пути в массиве DL_LOAD_PATH проверяются на наличие libfile, а затем система ищет путь загрузки.

Необязательный аргумент флагов — это побитовое ИЛИ нуля или более из RTLD_LOCAL, RTLD_GLOBAL, RTLD_LAZY, RTLD_NOW, RTLD_NODELETE, RTLD_NOLOAD, RTLD_DEEPBIND, и RTLD_FIRST. Они преобразуются в соответствующие флаги команды POSIX (и/или GNU libc и/или MacOS) dlopen, если это возможно, или игнорируются, если указанная функциональность недоступна на текущей платформе. Флаги по умолчанию зависят от платформы. На MacOS флаги по умолчанию dlopen — RTLD_LAZY|RTLD_DEEPBIND|RTLD_GLOBAL, в то время как на других платформах значения по умолчанию RTLD_LAZY|RTLD_DEEPBIND|RTLD_LOCAL. Важное использование этих флагов — указание поведения отличного от по умолчанию, когда загрузчик динамических библиотек связывает ссылки на библиотеки с экспортируемыми символами и если привязанные ссылки помещаются в область процесса или глобальную область. Например, RTLD_LAZY|RTLD_DEEPBIND|RTLD_GLOBAL позволяет символам библиотеки быть доступными для использования в других разделяемых библиотеках, что решает проблемы зависимости между разделяемыми библиотеками.

исходный код

Base.Libdl.dlopen_eФункция

dlopen_e(libfile::AbstractString [, flags::Integer])

Аналогично dlopen, за исключением возвращения указателя NULL вместо выдачи ошибок.

исходный код

Base.Libdl.RTLD_NOWКонстанта

RTLD_DEEPBIND
RTLD_FIRST
RTLD_GLOBAL
RTLD_LAZY
RTLD_LOCAL
RTLD_NODELETE
RTLD_NOLOAD
RTLD_NOW

Константа перечисления для dlopen. Подробности см. в справке вашей платформы, если применимо.

исходный код

Base.Libdl.dlsymФункция

dlsym(handle, sym)

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

исходный код

Base.Libdl.dlsym_eФункция

dlsym_e(handle, sym)

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

исходный код

Base.Libdl.dlcloseФункция

dlclose(handle)

Закрытие разделяемой библиотеки, на которую ссылается имя.

исходный код

Base.Libdl.dlextКонстанта

dlext

Расширение файла для динамических библиотек (например, dll, dylib, so) на текущей платформе.

исходный код

Base.Libdl.find_libraryФункция

find_library(names, locations)

Ищет первую библиотеку в names в списках путей locations, DL_LOAD_PATH, или системных путях библиотек (в указанном порядке), которую можно успешно загрузить с помощью dlopen. При успехе возвращается одно из имен (возможно, с префиксом одного из путей в указанных местах). Эта строка может быть назначена global const и использоваться в качестве имени библиотеки в будущих ccall. При неудаче возвращается пустая строка.

исходный код

Base.Libdl.DL_LOAD_PATHКонстанта

DL_LOAD_PATH

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

исходный код

© 2009–2016 Jeff Bezanson, Stefan Karpinski, Viral B. Shah, and other contributors
Licensed under the MIT License.
https://docs.julialang.org/en/release-0.6/stdlib/libdl/

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API