55#[ cfg( all( windows_raw_dylib,  target_arch = "x86" ) ) ]  
66#[ macro_export]  
77macro_rules!  link { 
8+     ( $library: literal "cdecl"  $( $link_name: literal) ? fn  $( $function: tt) * )  => ( 
9+         $crate:: link!( $library "C"  $( $link_name) ? fn  $( $function) * ) ; 
10+     ) ; 
811    ( $library: literal $abi: literal $( $link_name: literal) ? fn  $( $function: tt) * )  => ( 
912        #[ link( name = $library,  kind = "raw-dylib" ,  modifiers = "+verbatim" ,  import_name_type = "undecorated" ) ] 
1013        extern $abi { 
@@ -18,21 +21,11 @@ macro_rules! link {
1821#[ cfg( all( windows_raw_dylib,  not( target_arch = "x86" ) ) ) ]  
1922#[ macro_export]  
2023macro_rules!  link { 
24+     ( $library: literal "cdecl"  $( $link_name: literal) ? fn  $( $function: tt) * )  => ( 
25+         $crate:: link!( $library "C"  $( $link_name) ? fn  $( $function) * ) ; 
26+     ) ; 
2127    ( $library: literal $abi: literal $( $link_name: literal) ? fn  $( $function: tt) * )  => ( 
2228        #[ 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) ,  target_arch = "x86" ) ) ]  
32- #[ macro_export]  
33- macro_rules!  link { 
34-     ( $library: literal $abi: literal $( $link_name: literal) ? fn  $( $function: tt) * )  => ( 
35-         #[ link( name = "windows.0.53.0" ) ] 
3629        extern $abi { 
3730            $( #[ link_name=$link_name] ) ?
3831            pub  fn  $( $function) * ; 
@@ -41,12 +34,15 @@ macro_rules! link {
4134} 
4235
4336/// Defines an external function to import. 
44- #[ cfg( all( windows,  not( windows_raw_dylib) ,  not ( target_arch =  "x86" ) ) ) ]  
37+ #[ cfg( all( windows,  not( windows_raw_dylib) ) ) ]  
4538#[ macro_export]  
4639macro_rules!  link { 
40+     ( $library: literal "cdecl"  $( $link_name: literal) ? fn  $( $function: tt) * )  => ( 
41+         $crate:: link!( $library "C"  $( $link_name) ? fn  $( $function) * ) ; 
42+     ) ; 
4743    ( $library: literal $abi: literal $( $link_name: literal) ? fn  $( $function: tt) * )  => ( 
4844        #[ link( name = "windows.0.53.0" ) ] 
49-         extern "C"  { 
45+         extern $abi  { 
5046            $( #[ link_name=$link_name] ) ?
5147            pub  fn  $( $function) * ; 
5248        } 
@@ -57,8 +53,11 @@ macro_rules! link {
5753#[ cfg( all( not( windows) ,  not( windows_raw_dylib) ) ) ]  
5854#[ macro_export]  
5955macro_rules!  link { 
56+     ( $library: literal "cdecl"  $( $link_name: literal) ? fn  $( $function: tt) * )  => ( 
57+         $crate:: link!( $library "C"  $( $link_name) ? fn  $( $function) * ) ; 
58+     ) ; 
6059    ( $library: literal $abi: literal $( $link_name: literal) ? fn  $( $function: tt) * )  => ( 
61-         extern "C"  { 
60+         extern $abi  { 
6261            pub  fn  $( $function) * ; 
6362        } 
6463    ) 
0 commit comments