为了账号安全,请及时绑定邮箱和手机立即绑定

如何从用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 关注
  • 273 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信