Следите за новинками
в нашем Telegram канале. Жми, чтобы подписаться:)
1181 of 1246 menu
◀ ▶

Атрибут link

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

Синтаксис

#[link(name = "library_name")] #[link(name = "library_name", kind = "static")] #[link(name = "library_name", kind = "dylib")]

Пример

Давайте объявим внешнюю функцию из библиотеки "m" и укажем компоновщику подключить её через атрибут link:

#[link(name = "m")] extern "C" { fn sqrt(x: f64) -> f64; } fn main() { let res = unsafe { sqrt(16.0) }; println!("{}", res); }

Результат выполнения кода:

4

Пример

Давайте укажем статический тип библиотеки через параметр kind:

#[link(name = "m", kind = "dylib")] extern "C" { fn cos(x: f64) -> f64; } fn main() { let res = unsafe { cos(0.0) }; println!("{}", res); }

Результат выполнения кода:

1

Смотрите также

  • ключевое слово extern "C",
    которое объявляет внешние функции в стиле C
  • ключевое слово unsafe,
    которое позволяет выполнять небезопасные операции
  • атрибут no_mangle,
    который отключает искажение имён функций
  • атрибут repr(C),
    который задаёт C-совместимое представление структур
← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить