2 回答

TA貢獻(xiàn)1801條經(jīng)驗(yàn) 獲得超8個(gè)贊
我遇到過同樣的問題。仍然需要的人的一種解決方案是:
typedef const char cchar_t
void myNewFunction(cchar_t* data);
然后在 go 中使用它 data* C.char_t

TA貢獻(xiàn)1828條經(jīng)驗(yàn) 獲得超3個(gè)贊
由于 Go 沒有const
指針修飾符,因此無法從 Go 代碼內(nèi)部轉(zhuǎn)換此行為。cgo 將始終生成沒有const
修飾符的標(biāo)題。這也是您的代碼無法正確構(gòu)建的原因:僅根據(jù)它知道的內(nèi)容cgo
創(chuàng)建myFunc
:buf
should be char*
,not const char*
。
處理此問題的最佳方法是在 C 端使用包裝器將該參數(shù)轉(zhuǎn)換為const char*
. 在你的情況下,改變 to 的定義就足夠myFunc
了void myFunc(char*, int)
。cb_func
無論如何,將函數(shù)傳遞給將起作用,因?yàn)閺?qiáng)制轉(zhuǎn)換myFunc
為(*cb_func)(const char*,int)
僅添加類型信息但不會(huì)更改內(nèi)存布局。
- 2 回答
- 0 關(guān)注
- 270 瀏覽
添加回答
舉報(bào)