35 lines
676 B
Go
35 lines
676 B
Go
//go:build (!cgo || nocgo) && windows
|
|
|
|
package fitz
|
|
|
|
import (
|
|
"fmt"
|
|
"syscall"
|
|
|
|
"golang.org/x/sys/windows"
|
|
)
|
|
|
|
const (
|
|
libname = "libmupdf.dll"
|
|
)
|
|
|
|
// loadLibrary loads the dll and panics on error.
|
|
func loadLibrary() uintptr {
|
|
handle, err := syscall.LoadLibrary(libname)
|
|
if err != nil {
|
|
panic(fmt.Errorf("cannot load library %s: %w", libname, err))
|
|
}
|
|
|
|
return uintptr(handle)
|
|
}
|
|
|
|
// procAddress returns the address of symbol name.
|
|
func procAddress(handle uintptr, procName string) uintptr {
|
|
addr, err := windows.GetProcAddress(windows.Handle(handle), procName)
|
|
if err != nil {
|
|
panic(fmt.Errorf("cannot get proc address for %s: %w", procName, err))
|
|
}
|
|
|
|
return addr
|
|
}
|