我正在尝试使用与 C 兼容的标头调用 C++ 库中的函数,该函数希望我传入一个 4x4 矩阵以填充它。
我的 Go 函数定义如下所示:
func GetMatrix(matrix [][]float32)
func GetMatrix(matrix []float32)
而 c 头文件定义它是这样的:
void getMatrix(const float **matrix)
我尝试使用 C.GoBytes 来获取一个字节数组,但是从那里我有点迷失,因为我必须从一个字节数组转到一个指针数组,然后我再次将其转换为一个字节数组,最终是一组浮点数。
至少我认为这是我需要做的。
我见过用 C 数组数据替换底层 Go 切片的代码示例,但我相信在这些情况下,Go GC 不会收集它们。理想情况下,矩阵 [][]float32 的行为类似于普通的 Go 切片。
编辑: 文档不正确,底层 C 类型实际上是一个 16 元素浮点数组。
那么问题就变成了,我可以将 C.GoBytes 与指针一起使用,指向数组的指针吗?如果可以,我如何从 []byte 中获取 []float32?