gpt4 book ai didi

c++ - 如何从用 C/C++ 编写的 DLL 调用返回类型为 char* 或字符串的导出函数?

转载 作者:IT王子 更新时间:2023-10-29 02:00:23 29 4
gpt4 key购买 nike

我们设计的C/C++ DLL是这样的:

WIN32_DLL_EXPORT int FnRetInt(int i)
{
....
return 32 ;
}

WIN32_DLL_EXPORT char* FnRetString()
{
return "THIS IS A TEST STRING" ;
}

当我们在 Go 中使用系统调用调用这两个函数时:

hd:=syscall.NewLazyDLL(dll_path)
proc:=hd.NewProc(dll_func_name)
ret:=proc.Call()

我们发现:

FnRetInt 工作正常,但 FnRetString 没有。 proc.Call 返回类型是 uintptr,我们如何将其更改为我们想要的类型(例如:char* 或 string)?

最佳答案

uintptr 是一种表示指针的 Go 类型。您可以使用 unsafe 包并将其转换为 unsafe.Pointer,然后您可以将 unsafe.Pointer 转换为任何 Go 指针类型。所以你可以做类似的事情

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

返回 *uint8

关于c++ - 如何从用 C/C++ 编写的 DLL 调用返回类型为 char* 或字符串的导出函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12398261/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com