gpt4 book ai didi

go - 是否可以返回指向 go 共享库中结构的指针?

转载 作者:行者123 更新时间:2023-12-02 06:19:43 25 4
gpt4 key购买 nike

我正在尝试使用 Go 在 Windows 中创建 dll,并将其导入到 Python 中,但在导出返回指向 Go 结构的指针的函数时遇到一些问题。以下是一个非常精简的示例:

package main

import "C"

type data struct {
value1, value2 int
}

type PData *data

//export Callme
func Callme() PData {
var d PData = new (data)
return d
}

//export getValue1
func getValue1 (st PData) int {
return st.value1
}

func main() {
}

注意我还创建了一个指针类型,希望这最终会成为 C 端的一个简单句柄。为了让 C 端访问该结构,我将在 go 端提供帮助例程(我提供了一个示例),该例程将指向该结构的指针作为参数。不幸的是,上面的代码无法编译:

go build -o main.dll -buildmode=c-shared .\main.go
# command-line-arguments
.\main.go:5:11: Go type not supported in export: struct {
value1, value2 int
}
.\main.go:5:11: Go type not supported in export: struct {
value1, value2 int
}
.\main.go:5:11: Go type not supported in export: struct {
value1, value2 int
}
.\main.go:5:11: Go type not supported in export: struct {
value1, value2 int
}

这是 Go 的限制吗?我尝试过简单的返回值,例如 int 和 float,它们工作正常。

有什么办法可以解决吗?

最佳答案

基于https://golang.org/cmd/cgo/#hdr-C_references_to_Go :

Go struct types are not supported; use a C struct type.

另请查看以下 Github 问题: https://github.com/golang/go/issues/18412

关于go - 是否可以返回指向 go 共享库中结构的指针?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59218880/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com