第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機(jī)立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何從用C / C ++編寫的DLL調(diào)用導(dǎo)出的函數(shù),其返回類型為char *或string?

如何從用C / C ++編寫的DLL調(diào)用導(dǎo)出的函數(shù),其返回類型為char *或string?

Go
慕無忌1623718 2021-05-12 14:12:33
我們像這樣設(shè)計C / C ++ DLL:WIN32_DLL_EXPORT int FnRetInt(int i){   ....   return 32 ;} WIN32_DLL_EXPORT char* FnRetString(){   return "THIS IS A TEST STRING" ;}當(dāng)我們Go使用syscall調(diào)用這兩個函數(shù)時:hd:=syscall.NewLazyDLL(dll_path)proc:=hd.NewProc(dll_func_name)ret:=proc.Call()我們發(fā)現(xiàn):FnRetInt工作正常,但FnRetString沒有。proc.Call返回類型是uintptr,我們?nèi)绾螌⑵涓臑樗璧念愋停ɡ鏴xchar:char *或string)?
查看完整描述

2 回答

?
慕桂英4014372

TA貢獻(xiàn)1871條經(jīng)驗(yàn) 獲得超13個贊

Auintptr是代表指針的Go類型。您可以使用unsafe包并將其轉(zhuǎn)換為unsafe.Pointer,然后可以將轉(zhuǎn)換unsafe.Pointer為任何Go指針類型。所以你可以做類似的事情

str := (*uint8)(unsafe.Pointer(ret))

得到*uint8回報。


查看完整回答
反對 回復(fù) 2021-05-17
  • 2 回答
  • 0 關(guān)注
  • 298 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號