Linking Golang with XLib
cgo, go
Solution
cgo is picky about the formatting: you need to keep the "C" import separate, and place the preamble comments immediately above:
package main
// #cgo LDFLAGS: -lX11
// #include <X11/Xlib.h>
import "C"
import (
"fmt"
)
func main() {
var dpy = C.XOpenDisplay(nil)
if dpy == nil {
panic("Can't open display")
}
fmt.Println("%ix%i", C.XDisplayWidth(dpy, 0), C.XDisplayHeight(dpy, 0));
}
Problem
I am trying to use XLib within Go using this code: ``` package main // #cgo LDFLAGS: -lX11 // #include <X11/Xlib.h> import ( "C" "fmt" ) func main() { var dpy = C.XOpenDisplay(nil); if dpy == nil { panic("Can't open display") } fmt.Println("%ix%i", C.XDisplayWidth(), C.XDisplayHeight()); } ``` I'm compiling this via: ``` go tool cgo $(FILE) ``` But it results in the following error messages: ``` 1: error: 'XOpenDisplay' undeclared (first use in this function) 1: note: each undeclared identifier is reported only once for each function it appears in 1: error: 'XDisplayWidth' undeclared (first use in this function) 1: error: 'XDisplayHeight' undeclared (first use in this function) ``` Any idea how to solve this?