如何使用C ++编写golang包?

时间:2016-06-15 12:21:04

标签: c++ go cgo

目前在C ++中实现golang包有哪些工具?我想要这个工作:

import (
    "fmt"
    "zuzu" // my package
}

v := zuzu.Func(1,2,3)

并且zuzu.Func()必须用C ++编写如下:

// C++ code:
int Func(int a, int b, int c) {
    return a + b + c;
}

我应该使用cgo(https://golang.org/cmd/cgo/)来实现这一目标吗?据我了解,我必须创建一个.go文件,它提供Func()的声明,并使用cgo语法链接我的.cpp / .h文件与实际实现?

难题

C ++函数能否构造并返回一个非平凡的Go变量,例如map[int]map[int]int

C ++函数可以返回变量类型的值吗?伪CPP-代码:

// C++ code
// This function may return map[float32] or int.
MIXED_RETURN_TYPE cpp_func(int x) {
    if ( 1 == x  ) {
        return MAP_OF_FLOATS; // go type: map[float32]
    } else {
        return 2;             // go type: int
    }
}

0 个答案:

没有答案