亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

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

如何從用C / C ++編寫的DLL調用導出的函數,其返回類型為char *或string?

如何從用C / C ++編寫的DLL調用導出的函數,其返回類型為char *或string?

Go
慕無忌1623718 2021-05-12 14:12:33
我們像這樣設計C / C ++ DLL:WIN32_DLL_EXPORT int FnRetInt(int i){   ....   return 32 ;} WIN32_DLL_EXPORT char* FnRetString(){   return "THIS IS A TEST STRING" ;}當我們Go使用syscall調用這兩個函數時:hd:=syscall.NewLazyDLL(dll_path)proc:=hd.NewProc(dll_func_name)ret:=proc.Call()我們發現:FnRetInt工作正常,但FnRetString沒有。proc.Call返回類型是uintptr,我們如何將其更改為所需的類型(例如exchar:char *或string)?
查看完整描述

2 回答

?
慕桂英4014372

TA貢獻1871條經驗 獲得超13個贊

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

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

得到*uint8回報。


查看完整回答
反對 回復 2021-05-17
  • 2 回答
  • 0 關注
  • 305 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號