go [][]byte から C **char に変換したいと思います。つまり、C で char double ポインターに変換したいバイト マトリックスが go にあります。
[][]byte を入力として、**char を出力として持つ必要があると仮定してください。
次のような方法で []byte から *char に変換できることはわかっています。
((*C.char)(unsafe.Pointer(&data[0])))
しかし、このケースを 2 次元に拡張することはできないようです。[][]バイトを新しい[]バイトにパックする、かなり手の込んだことを試しました。次に、その []byte を C 関数に送信します。C 関数は、ポインター演算を使用して **char を作成し、新しい []byte の正しい位置を指します。
ただし、この変換により奇妙な動作が発生します。データは数回の反復では正しいのですが、関数呼び出し間で破損しているように見えます。
誰かに何かアイデアがあれば、本当に感謝します。
回答から、文字列ではなく生データを扱っていることを述べることが重要であることがわかります。したがって、ゴーバイトタイプです。したがって、C 文字列ターミネータを追加すると、元のデータが破損します。char のサイズは 1 バイトであるため、C **char を使用しています。そうは言っても、応答に感謝します。受け入れられた回答を自分のニーズに合わせることができました。