我想使用带有选项go build -buildmode=c-shared
的Go / Cgo构建.so库。
函数可以很好地导出,但是我不能导出变量。我需要实现一个API,该API可以通过调用void函数来工作,该函数可以设置各种全局属性的值。像这样:
var (
Gval1 int
Gval2 string
//GvalN
)
func f(){
Gval1 = 1
Gval2 = "qwerty"
}
.so lib的客户端将运行f();然后,它可以通过寻址变量名称来获取变量。如何导出它们? 我曾尝试过这样的技巧:golang cgo can't export variables by build mode c-shared,但是没有成功(示例返回的总是0,而不是42)。 如何导出变量(数字和字符串)?
答案 0 :(得分:1)
我认为您不能导出变量,只能导出函数。
go build文档说:
max
-buildmode=c-shared
Build the listed main package, plus all packages it imports,
into a C shared library. The only callable symbols will
be those functions exported using a cgo //export comment.
Requires exactly one main package to be listed
我想您可以编写一个返回变量值的函数。