diff --git a/library/windows_targets/src/lib.rs b/library/windows_targets/src/lib.rs index 9e82e6a720006..7d04db6475588 100644 --- a/library/windows_targets/src/lib.rs +++ b/library/windows_targets/src/lib.rs @@ -33,8 +33,15 @@ pub macro link_dylib { } #[cfg(feature = "windows_raw_dylib")] -pub macro link($($tt:tt)*) { - $crate::link_raw_dylib!($($tt)*) +pub macro link{ + ($library:literal $abi:literal $($link_name:literal)? $(#[$doc:meta])? fn $($function:tt)*) => ( + #[cfg_attr(not(target_arch = "x86"), link(name = $library, kind = "raw-dylib", modifiers = "+verbatim"))] + #[cfg_attr(target_arch = "x86", link(name = $library, kind = "raw-dylib", modifiers = "+verbatim", import_name_type = "undecorated"))] + unsafe extern $abi { + $(#[link_name=$link_name])? + pub fn $($function)*; + } + ) } #[cfg(not(feature = "windows_raw_dylib"))]