将GoSlice直接传递给C

时间:2017-05-17 02:03:00

标签: go

我想了解cgo。我可以从go和其他方式调用C函数。我尝试过做一些不同的事情而且没有用。

去代码:

// main.go

package main

/*
extern void myfunction(GoSlice s);
*/
import "C"

func main() {
    var s [5]byte
    C.myfunction(s[:])
}

C代码:

// main.c

#include "_cgo_export.h"

#include <stdint.h>

void myfunction(GoSlice s)
{
    for (int i = 0; i < s.len; i++)
        printf("%hhu ", ((uint8_t *)s.data)[i]);
}

编译失败,因为在main.go中C函数声明时未定义GoSlice。另外,我不能在main.go中包含_cgo_export.h来获取定义。有什么方法可以让这个工作吗?请注意,我可以使用C兼容的数据类型来使用该功能。但我想在这里直接使用go数据类型。

0 个答案:

没有答案
相关问题