go - golang 如何创建缓冲区以传递给 C dll 函数?

标签 go

我需要从 golang 调用一个 C API,它来自一个 dll。 问题是 C func 需要一个缓冲区,如何创建 golang 中的缓冲区,然后我可以将缓冲区传递给 C 函数?

void fooGetString(char* buffer, int buffer length)

最佳答案

像这样的东西应该可以工作:

s := make([]byte, 256)
C.fooGetString((*C.char)(unsafe.Pointer(&s[0])), C.int(len(s)))

关于go - golang 如何创建缓冲区以传递给 C dll 函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10260555/

相关文章:

go - 惯用地干掉 Go 中的公共(public)字段

go - time.after和time.Tick在go-tour中如何在default-selection.go中工作?

go - 解码时如何跳过元素?

google-app-engine - 将结构 slice 转换为空接口(interface) slice

go - 无法获取通过反射调用的方法的返回字符串值

amazon-web-services - 使用 Go 在 AWS SES 中自定义电子邮件 header

string - 如何从 Golang 中的字符串中修剪 "["字符

go - 在 Golang 中创建数组文字数组

go - 为什么将指针复制到Go结构不会保持链接到原始结构?

go - 我们如何知道用户通过 api 更改了 github 中默认的个人资料图片