无法访问CGO中的C变量

无法访问CGO中的C变量,第1张

无法访问CGO中的C变量 define对CGo有问题。我可以将其与Linux amd64上的Go 1.8.1一起使用,如下所示:
package mainimport "os"import "C"type record C.utmpxfunc main() {    path := C.GoString(C.path_utmpx)    fd, err := os.Open(path)    if err != nil {        panic("bad")    }    fd.Close()}
  1. 我必须定义_GNU_SOURCE才能获得UTMPX_FILE定义。
  2. 我不得不创建path_utmpx变量来解决CGo的#define问题。
  3. 我必须执行typedef才能进行
    type record C.utmpx
    编译。
  4. 使用Go,您不能直接使用C字符串。您必须将它们转换为Go字符串。同样,如果要使用Go字符串调用C函数,则必须将它们转换为C字符串(并释放堆中分配的空间)。

一些提示:

  • https://blog.golang.org/c-go-cgo
  • https://golang.org/cmd/cgo/

祝好运!



欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5476392.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-12
下一篇 2022-12-12

发表评论

登录后才能评论

评论列表(0条)

保存