我发现使用cgo最困难的部分是类型转换。
我在“*VeFPE”类型的范围内有一个变量,该类型在C头文件中定义如下:
typedef struct VeFPE_st *VeFPE;
我必须调用一个需要“VeObj”类型参数的方法,该参数在C头文件中定义如下:
typedef void *VeObj;
如果我只是提供变量而没有任何限制,我得到
cannot use xxxxx (variable of type *_Ctype_VeFPE) as _Ctype_VeObj value in argument to C.yyyyy
我试过几种不同的方法。我注意到了
https://jamesadam.me/2016/03/26/c-and-go-dealing-with-void-parameters-in-cgo/
,这可能是相关的,但我不确定。
我想可能是“unsafe.Pointer(xxxxx)”的变体,但这给出了基本相同的错误。