我正在尝试使用 cairo 绑定(Go 包),它定义了一个包装结构,其中包含 C 类型和 C 函数,但无法使其工作。
cairo 包定义了一个上下文:
package cairo
...
type Context struct {
Ptr *C.cairo_t
}
...
然后,从主包中,我想使用它的指针:
package main
...
cr := cairo.Create(surf.Surface)
layout := C.pango_cairo_create_layout(cr.Ptr)
...
accepts ,这是应该的C.pango_cairo_create_layout。但是,go 编译器不同意:*C.cairo_tcr.Ptr
./main.go:114:157: cannot use cr.Ptr (type *cairo._Ctype_struct__cairo) as type *_Ctype_struct__cairo in argument to func literal
可以看出,cr.Ptr是类型*cairo.C.cairo_t而不是*C.cairo_t类型,即包命名空间是类型的一部分。
我找到了https://github.com/golang/go/issues/13467,它讨论了使用 reflect 包和unsafe.Pointer. 但是,我无法让它工作。
我如何正确地“弯曲”它以便它编译和工作?
守候你守候我
相关分类