我開始嘗試將一些 C 庫集成到我使用 cgo 的項目的 Go 代碼中,但遇到了一個問題。在其中一個 C 函數(shù)中,我需要將 argv 傳遞給函數(shù)調(diào)用。在 C 中,argv 是一個指向字符字符串?dāng)?shù)組的指針(K&R C,第 5.10 節(jié)),我需要將字符串片段轉(zhuǎn)換為字符**。關(guān)于如何進行從 Go 到 C 的變量類型轉(zhuǎn)換的任何信息,我已經(jīng)很好地看了一遍,但似乎幾乎沒有文檔。任何幫助,將不勝感激。
1 回答

動漫人物
TA貢獻(xiàn)1815條經(jīng)驗 獲得超10個贊
您需要自己創(chuàng)建數(shù)組。這樣的事情應(yīng)該做:
argv := make([]*C.char, len(args))
for i, s := range args {
cs := C.CString(s)
defer C.free(unsafe.Pointer(cs))
argv[i] = cs
}
C.foo(&argv[0])
- 1 回答
- 0 關(guān)注
- 213 瀏覽
添加回答
舉報
0/150
提交
取消