【问题标题】:From []byte to char*从 []byte 到 char*
【发布时间】:2013-04-28 20:46:33
【问题描述】:

我想包装一个 C 函数,它接受一个 char* 指向一个非空字节缓冲区(的第一个元素)。我正在尝试使用 CGo 将其包装在 Go 函数中,以便我可以将其传递给 []byte,但我不知道如何进行转换。 C 函数签名的简化版本是

void foo(char const *buf, size_t n);

我尝试将指针传递给切片中的第一个 byte

C.foo(&b[0], C.size_t(n))

不过,这并不能编译:

cannot use &b[0] (type *byte) as type *_Ctype_char in function argument

那么这里的正确程序是什么? go-wiki 只描述了相反的情况。

【问题讨论】:

    标签: c pointers go cgo


    【解决方案1】:

    好的,结果比我想象的要容易得多:

    (*C.char)(unsafe.Pointer(&b[0]))
    

    成功了。 (在golang-nuts 找到这个。)

    【讨论】:

      猜你喜欢
      • 2014-12-11
      • 1970-01-01
      • 1970-01-01
      • 2019-07-01
      • 1970-01-01
      • 2015-04-03
      • 2011-07-22
      • 2013-01-27
      • 1970-01-01
      相关资源
      最近更新 更多