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

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

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

Go
慕容森 2021-05-04 13:09:27
我需要从godll(从dll)调用C API。问题是C函数需要缓冲区,如何在golang中创建缓冲区,那么我可以将缓冲区传递给C函数?void fooGetString(char* buffer, int buffer length)
查看完整描述

2 回答

?
慕尼黑5688855

TA贡献1848条经验 获得超2个赞

这样的事情应该起作用:


s := make([]byte, 256)

C.fooGetString((*C.char)(unsafe.Pointer(&s[0])), C.int(len(s)))


查看完整回答
反对 回复 2021-05-10
?
青春有我

TA贡献1784条经验 获得超8个赞

package main


// #include <string.h>

// void foo(char *s, int len) {

//     strncpy(s, "foo", len);

// }

import "C"


import "fmt"

import "unsafe"


func main() {

    buf := make([]byte, 256)

    C.foo((*C.char)(unsafe.Pointer(&buf[0])), C.int(len(buf)))

    fmt.Println(string(buf))

}

输出:


foo


查看完整回答
反对 回复 2021-05-10
  • 2 回答
  • 0 关注
  • 244 浏览
慕课专栏
更多

添加回答

举报

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