func LoadDLL(name string) (dll *DLL, err error) {
	namep, err := UTF16PtrFromString(name)
	if err != nil {
		return nil, err
	}
	h, e := loadlibrary(namep)
	if e != 0 {
		return nil, &DLLError{
			Err:     e,
			ObjName: name,
			Msg:     "Failed to load " + name + ": " + e.Error(),
		}
	}
	d := &DLL{
		Name:   name,
		Handle: Handle(h),
	}
	return d, nil
}
LoadDLL loads DLL file into memory.

Warning: using LoadDLL without an absolute path name is subject to
DLL preloading attacks. To safely load a system DLL, use LazyDLL
with System set to true, or use LoadLibraryEx directly.
package windows
import (
	"sync"
	"sync/atomic"
	"syscall"
	"unsafe"
)
type DLLError struct {
	Err     error
	ObjName string
	Msg     string
}
func (e *DLLError) Error() string { return e.Msg }
func loadlibrary(filename *uint16) (handle uintptr, err syscall.Errno)
func getprocaddress(handle uintptr, procname *uint8) (proc uintptr, err syscall.Errno)
type DLL struct {
	Name   string
	Handle Handle
}