登录
首页 >  Golang >  Go问答

导入 cgo 时 import "C" 不执行 init() 函数

来源:stackoverflow

时间:2024-03-14 21:51:23 341浏览 收藏

Golang不知道大家是否熟悉?今天我将给大家介绍《导入 cgo 时 import "C" 不执行 init() 函数》,这篇文章主要会讲到等等知识点,如果你在看完本篇文章后,有更好的建议或者发现哪里有问题,希望大家都能积极评论指出,谢谢!希望我们能一起加油进步!

问题内容

如果我将 cgo 导入到 go 程序中,init 函数似乎不会运行。这种行为似乎是新的,因为(未指定的)旧版本的 go 确实设法运行了 init()。

程序被分成几个go文件,都在main包中。大多数其他文件都有一个 init 函数,它的作用是:

31 func init() {
 32   if len(testFunctionsMap) == 0 {
 33     testFunctionsMap = make(funcPtrMap)
 34   }
 35   testFunctionsMap["somename"] = funcname
 36   initCtr++
 37 }

我添加了 initctr(全局)变量来跟踪调用了多少个 init 函数;唯一没有被调用的是我导入“c”的文件中的那个(带有伴随的特殊注释)


解决方案


好像添加了这个: CGO_ENABLED=0 ... 去构建 ... 在构建脚本中。毫不奇怪,cgo init 函数没有运行 - 该文件中也没有执行任何其他操作,但我从未做到这一点!

今天关于《导入 cgo 时 import "C" 不执行 init() 函数》的内容就介绍到这里了,是不是学起来一目了然!想要了解更多关于的内容请关注golang学习网公众号!

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