将Golang与XLib连接起来
我正试图使用以下代码在Go中使用XLib:将Golang与XLib连接起来,go,cgo,Go,Cgo,我正试图使用以下代码在Go中使用XLib: 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("%
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());
}
但它会导致以下错误消息:
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)
知道如何解决这个问题吗?cgo对格式很挑剔:您需要将“C”导入分开,并将序言注释放在紧接着的上方:
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));
}
主程序包
//#cgo LDFLAGS:-lX11
//#包括
输入“C”
进口(
“fmt”
)
func main(){
变量dpy=C.XOpenDisplay(无)
如果dpy==nil{
恐慌(“无法打开显示”)
}
fmt.Println(“%ix%i”,C.XDisplayWidth(dpy,0),C.XDisplayHeight(dpy,0));
}
首先,您不想直接使用围棋工具cgo
,除非您有这样做的具体原因。继续使用go build
,就像不使用cgo的项目一样
其次,您的cgo参数需要直接附加到“C”导入,因此它必须读取
// #cgo LDFLAGS: -lX11
// #include <X11/Xlib.h>
import "C"
import (
// your other imports
)
/#cgo LDFLAGS:-lX11
//#包括
输入“C”
进口(
//你的其他进口产品
)
// #cgo LDFLAGS: -lX11
// #include <X11/Xlib.h>
import "C"
import (
// your other imports
)