登录
首页 >  Golang >  Go问答

导出变量时使用cgo构建共享对象

来源:stackoverflow

时间:2024-03-03 16:54:28 149浏览 收藏

小伙伴们对Golang编程感兴趣吗?是否正在学习相关知识点?如果是,那么本文《导出变量时使用cgo构建共享对象》,就很适合你,本篇文章讲解的知识点主要包括。在之后的文章中也会多多分享相关知识点,希望对大家的知识积累有所帮助!

问题内容

我想使用 go/cgo 和选项 go build -buildmode=c-shared 构建一个 .so 库。 函数导出得很好,但我无法导出变量。我需要实现一个 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)。 如何导出变量(数字和字符串)?


解决方案


我认为您不能导出变量,只能导出函数。

go build 文档说:

-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

cgo docs says在哪里

Go functions can be exported for use by C code in the following way:

我想你可以编写一个返回变量值的函数。

文中关于的知识介绍,希望对你的学习有所帮助!若是受益匪浅,那就动动鼠标收藏这篇《导出变量时使用cgo构建共享对象》文章吧,也可关注golang学习网公众号了解相关技术文章。

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>