我正在尝试使用以下代码在 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("%ix%i", C.XDisplayWidth(), C.XDisplayHeight());}我正在通过以下方式编译:go tool cgo $(FILE)但这会导致以下错误消息:1: error: 'XOpenDisplay' undeclared (first use in this function)1: note: each undeclared identifier is reported only once for each function it appears in1: error: 'XDisplayWidth' undeclared (first use in this function)1: error: 'XDisplayHeight' undeclared (first use in this function)知道如何解决这个问题吗?
2 回答
LEATH
TA贡献1936条经验 获得超6个赞
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));
}
一只萌萌小番薯
TA贡献1795条经验 获得超7个赞
首先,你不想go tool cgo直接使用,除非你有特定的理由这样做。go build像不使用 cgo 的项目一样继续使用。
其次,你的 cgo 参数需要直接附加到“C”导入,所以它必须读取
// #cgo LDFLAGS: -lX11
// #include <X11/Xlib.h>
import "C"
import (
// your other imports
)
- 2 回答
- 0 关注
- 265 浏览
添加回答
举报
0/150
提交
取消