我想从 Go 函数返回一个 C 结构值。假设ProcessX()和ProcessY()是返回整数(uint8 值)的 go 方法:package main/*struct Point { char x; char y;};*/import "C"//export CreatePointfunc CreatePoint(x uint8, y uint8) C.Point { xVal := ProcessX(x); yVal := ProcessY(y); return C.Point {x: xVal, y: yVal}}func main() {}但这会导致构建错误:“ .\main.go:13:36: could not determine kind of name for C.Point”编辑:通过mingw在Windows 10中使用go build -ldflags "-s -w" -buildmode=c-shared -o mylibc.dll .\main.go编译编辑2:我已经删除了“C”导入和前面的序言之间的空行,但无法避免错误。现在的代码是这样的:/*struct Point { char x; char y;};*/import "C"
1 回答

茅侃侃
TA贡献1842条经验 获得超21个赞
我发现阅读文档有助于解决此类问题。
要直接访问结构类型,请在其前面加上 struct_,如在 C.struct_stat 中一样。
package main
/*
struct Point {
char x;
char y;
};
*/
import "C"
//export CreatePoint
func CreatePoint(x uint8, y uint8) C.struct_Point {
xVal := ProcessX(x);
yVal := ProcessY(y);
return C.struct_Point {x: C.char(xVal), y: C.char(yVal)}
}
func ProcessX(x uint8) uint8 { return x | 'x'}
func ProcessY(y uint8) uint8 { return y | 'y'}
func main() {}
- 1 回答
- 0 关注
- 72 浏览
添加回答
举报
0/150
提交
取消