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

我需要从godll(从dll)调用C API。问题是C函数需要缓冲区,如何在golang中创建缓冲区,那么我可以将缓冲区传递给C函数?

void fooGetString(char* buffer, int buffer length)


慕容森
浏览 245回答 2
2回答

慕尼黑5688855

这样的事情应该起作用:s := make([]byte, 256)C.fooGetString((*C.char)(unsafe.Pointer(&s[0])), C.int(len(s)))

青春有我

package main// #include <string.h>// void foo(char *s, int len) {//&nbsp; &nbsp; &nbsp;strncpy(s, "foo", len);// }import "C"import "fmt"import "unsafe"func main() {&nbsp; &nbsp; buf := make([]byte, 256)&nbsp; &nbsp; C.foo((*C.char)(unsafe.Pointer(&buf[0])), C.int(len(buf)))&nbsp; &nbsp; fmt.Println(string(buf))}输出:foo
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go