1 use crate::os::windows::prelude::*;
3 use crate::ffi::{CString, OsStr};
7 pub struct DynamicLibrary {
12 pub fn open(filename: &str) -> io::Result<DynamicLibrary> {
13 let filename = OsStr::new(filename)
18 c::LoadLibraryW(filename.as_ptr())
21 Err(io::Error::last_os_error())
23 Ok(DynamicLibrary { handle: result })
27 pub fn symbol(&self, symbol: &str) -> io::Result<usize> {
28 let symbol = CString::new(symbol)?;
30 match c::GetProcAddress(self.handle, symbol.as_ptr()) as usize {
31 0 => Err(io::Error::last_os_error()),
38 impl Drop for DynamicLibrary {
41 c::FreeLibrary(self.handle);