C互換ヘッダーを使用してC++ライブラリの関数を呼び出そうとしています。これにより、4x4行列を渡してデータを取り込む必要があります。
私のGo関数の定義は次のようになります。
func GetMatrix(matrix [][]float32)
func GetMatrix(matrix []float32)
そして、cヘッダーはそれを次のように定義します:
void getMatrix(const float **matrix)
C.GoBytesを使用してバイト配列を取得しようとしましたが、バイト配列からポインターの配列に移動し、それを再びバイトの配列に変換する必要があるため、そこから少し迷っています。そして最終的にはフロートの配列。
少なくとも、それが私がしなければならないことだと思います。
基になるGoスライスをC配列データに置き換えるコードの例を見てきましたが、そのような場合、GoGCはそれらを収集しないと思います。理想的には、行列[][]float32は通常のGoスライスのように動作します。
編集: ドキュメントが正しくなく、基になるCタイプは実際には16要素のfloat配列です。
したがって、問題は、配列のポインタへのポインタでC.GoBytesを使用できますか?もしそうなら、[]byteから[]float32を取得するにはどうすればよいですか?