我試圖在C++庫中調用一個C兼容頭文件的函數,該頭文件需要我傳入一個4x4矩陣來填充它。CGO從C **獲取[] [] float32 float **
我轉到函數定義是這樣的:
func GetMatrix(matrix [][]float32)
func GetMatrix(matrix []float32)
以及C頭文件定義它是這樣的:
void getMatrix(const float **matrix)
我已經嘗試使用C.GoBytes獲得一個字節數組,但從那裏我是一個因爲我必須從一個字節數組轉換爲一個指針數組,所以我再次轉換爲一個字節數組,最後是一個浮點數組。
至少我認爲這就是我需要做的。
我見過代碼用C數組數據替換底層Go slice的代碼示例,但我相信在這些情況下,Go GC不會收集它們。理想情況下,matrix [] [] float32的行爲就像普通的Go切片一樣。
編輯: 文檔是不正確的,並且底層的C型實際上是一個16族元素float數組。
因此,問題就變成了,我可以使用C.GoBytes和一個指針,指向一個數組的指針,如果是的話,如何從[]字節獲得[] float32?
這就是我想,但這個API調用的所有參考內置矩陣與一個4x4數組陣列。 – Gaidin
取決於C的具體聲明(不幸未在問題中顯示)。 Atom的答案可能是正確的,我會試試看;-) – zzzz
也許是關於主題,但是有一個指向矩陣指針的指針呢? – Gaidin