@@ -3,24 +3,29 @@ extern crate libloading;
33use libloading:: os:: windows:: * ;
44use std:: ffi:: CStr ;
55use std:: os:: raw:: c_void;
6- // The ordinal DLL contains exactly one function (other than DllMain, that is) with ordinal number
7- // 1. This function has the sugnature `fn() -> *const c_char` and returns a string "bunny\0" (in
8- // reference to WindowsBunny).
9- //
10- // Both x86_64 and x86 versions of the .dll are functionally the same. Ideally we would compile the
11- // dlls with well known ordinals from our own testing helpers library, but rustc does not allow
12- // specifying a custom .def file (https://github.com/rust-lang/rust/issues/35089)
13- //
14- // The DLLs were kindly compiled by WindowsBunny (aka. @retep998).
156
16- #[ cfg( target_arch = "x86" ) ]
7+ #[ cfg( any ( target_arch = "x86" , target_arch = "x86_64" ) ) ]
178fn load_ordinal_lib ( ) -> Library {
18- unsafe { Library :: new ( "tests/nagisa32.dll" ) . expect ( "nagisa32.dll" ) }
19- }
9+ use std:: path:: PathBuf ;
2010
21- #[ cfg( target_arch = "x86_64" ) ]
22- fn load_ordinal_lib ( ) -> Library {
23- unsafe { Library :: new ( "tests/nagisa64.dll" ) . expect ( "nagisa64.dll" ) }
11+ const TEST_DLL : & ' static str = "windows_test_dll.dll" ;
12+
13+ let library_path = std:: env:: var ( "LD_LIBRARY_PATH" ) . unwrap ( ) ;
14+ let path = std:: env:: var ( "PATH" ) . unwrap ( ) ;
15+ println ! ( "{library_path}" ) ;
16+ println ! ( "{path}" ) ;
17+ let library_path = library_path. split ( ":" ) . find ( |s| s. ends_with ( "deps" ) ) ;
18+ let path = path. split ( ":" ) . find ( |s| s. ends_with ( "deps" ) ) ;
19+ let path = match ( path, library_path) {
20+ ( Some ( p) , _) if PathBuf :: from ( p) . join ( TEST_DLL ) . exists ( ) => PathBuf :: from ( p) . join ( TEST_DLL ) ,
21+ ( _, Some ( p) ) if PathBuf :: from ( p) . join ( TEST_DLL ) . exists ( ) => PathBuf :: from ( p) . join ( TEST_DLL ) ,
22+ _ => panic ! ( "No test DLL found" ) ,
23+ } ;
24+ let path = path. display ( ) . to_string ( ) ;
25+
26+ println ! ( "Windows test dll path: {path}" ) ;
27+
28+ unsafe { Library :: new ( format ! ( "{path}" ) ) . expect ( "Windows test dll not found" ) }
2429}
2530
2631#[ cfg( any( target_arch = "x86" , target_arch = "x86_64" ) ) ]
0 commit comments