我需要從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)))

青春有我
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
- 2 回答
- 0 關注
- 268 瀏覽
添加回答
舉報
0/150
提交
取消