为了账号安全,请及时绑定邮箱和手机立即绑定

如何从 go 函数返回 C 结构值

如何从 go 函数返回 C 结构值

Go
千巷猫影 2022-12-13 10:53:18
我想从 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 中一样。

cgo 命令

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() {}


查看完整回答
反对 回复 2022-12-13
  • 1 回答
  • 0 关注
  • 72 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号