30 lines
		
	
	
		
			702 B
		
	
	
	
		
			V
		
	
	
			
		
		
	
	
			30 lines
		
	
	
		
			702 B
		
	
	
	
		
			V
		
	
	
| module dl
 | |
| 
 | |
| pub const (
 | |
| 	rtld_now = 0
 | |
| 	rtld_lazy = 0
 | |
| 	dl_ext   = '.dll'
 | |
| )
 | |
| 
 | |
| fn C.LoadLibrary(libfilename C.LPCWSTR) voidptr
 | |
| 
 | |
| fn C.GetProcAddress(handle voidptr, procname C.LPCSTR) voidptr
 | |
| 
 | |
| fn C.FreeLibrary(handle voidptr) bool
 | |
| 
 | |
| // open loads a given module into the address space of the calling process.
 | |
| pub fn open(filename string, flags int) voidptr {
 | |
| 	res := C.LoadLibrary(filename.to_wide())
 | |
| 	return res
 | |
| }
 | |
| 
 | |
| // close frees the loaded a given module.
 | |
| pub fn close(handle voidptr) bool {
 | |
| 	return C.FreeLibrary(handle)
 | |
| }
 | |
| 
 | |
| // sym returns an address of an exported function or variable from a given module.
 | |
| pub fn sym(handle voidptr, symbol string) voidptr {
 | |
| 	return C.GetProcAddress(handle, symbol.str)
 | |
| }
 |