windows_targets/
lib.rs

1#![doc = include_str!("../readme.md")]
2#![no_std]
3
4/// Defines an external function to import.
5#[cfg(all(windows_raw_dylib, target_arch = "x86"))]
6#[macro_export]
7macro_rules! link {
8    ($library:literal $abi:literal $($link_name:literal)? fn $($function:tt)*) => (
9        #[link(name = $library, kind = "raw-dylib", modifiers = "+verbatim", import_name_type = "undecorated")]
10        extern $abi {
11            $(#[link_name=$link_name])?
12            pub fn $($function)*;
13        }
14    )
15}
16
17/// Defines an external function to import.
18#[cfg(all(windows_raw_dylib, not(target_arch = "x86")))]
19#[macro_export]
20macro_rules! link {
21    ($library:literal $abi:literal $($link_name:literal)? fn $($function:tt)*) => (
22        #[link(name = $library, kind = "raw-dylib", modifiers = "+verbatim")]
23        extern "C" {
24            $(#[link_name=$link_name])?
25            pub fn $($function)*;
26        }
27    )
28}
29
30/// Defines an external function to import.
31#[cfg(all(windows, not(windows_raw_dylib)))]
32#[macro_export]
33macro_rules! link {
34    ($library:literal $abi:literal $($link_name:literal)? fn $($function:tt)*) => (
35        #[link(name = "windows.0.53.0")]
36        extern $abi {
37            $(#[link_name=$link_name])?
38            pub fn $($function)*;
39        }
40    )
41}
42
43/// Defines an external function to import.
44#[cfg(all(not(windows), not(windows_raw_dylib)))]
45#[macro_export]
46macro_rules! link {
47    ($library:literal $abi:literal $($link_name:literal)? fn $($function:tt)*) => (
48        extern $abi {
49            pub fn $($function)*;
50        }
51    )
52}