34 lines
652 B
Go
34 lines
652 B
Go
//go:build (!cgo || nocgo) && darwin
|
|
|
|
package fitz
|
|
|
|
import (
|
|
"fmt"
|
|
|
|
"github.com/ebitengine/purego"
|
|
)
|
|
|
|
const (
|
|
libname = "libmupdf.dylib"
|
|
)
|
|
|
|
// loadLibrary loads the so and panics on error.
|
|
func loadLibrary() uintptr {
|
|
handle, err := purego.Dlopen(libname, purego.RTLD_NOW|purego.RTLD_GLOBAL)
|
|
if err != nil {
|
|
panic(fmt.Errorf("cannot load library: %w", err))
|
|
}
|
|
|
|
return handle
|
|
}
|
|
|
|
// procAddress returns the address of symbol name.
|
|
func procAddress(handle uintptr, procName string) uintptr {
|
|
addr, err := purego.Dlsym(handle, procName)
|
|
if err != nil {
|
|
panic(fmt.Errorf("cannot get proc address for %s: %w", procName, err))
|
|
}
|
|
|
|
return addr
|
|
}
|