登录
首页 >  Golang >  Go问答

聊聊有关C中用Go的限制

来源:Golang技术栈

时间:2023-03-08 15:06:44 284浏览 收藏

最近发现不少小伙伴都对Golang很感兴趣,所以今天继续给大家介绍Golang相关的知识,本文《聊聊有关C中用Go的限制》主要内容涉及到golang等等知识点,希望能帮到你!当然如果阅读本文时存在不同想法,可以在评论中表达,但是请勿使用过激的措辞~

问题内容

最近偶然发现这篇关于在 C 和其他语言中利用 Go 的共享库编译器的文章:[https ://medium.com/learning-the-go- programming-language/calling-go-functions-from-other- languages-4c7d8bcc69bf](https://medium.com/learning-the-go-programming- language/calling-go-functions-from-other-languages-4c7d8bcc69bf)

我想知道编译器使用的限制是什么?例如,一旦编译,Go 的 net 和 socket 库是否都可以像独立的 Go 应用程序一样工作?

IE。理论上我可以有一个 Go 应用程序作为通信层(比如说 HTTP)和一个 C 应用程序执行一些较低级别的处理,然后交给 Go 进行交付?

很抱歉用例的尴尬解释,只是试图了解 Go 在一般编译环境中的反应。我对这个级别的共享库知之甚少,所以只是好奇。

正确答案

理论上,没有限制——从概念上讲,.so 只是一堆机器代码,恰好捆绑了一个非常智能的内存管理器,并公开了一个与共享库格式匹配的 API。

在实践中,有一组最小的怪癖。比如go中链接的程序.so目前不能调用dlclose它:https ://github.com/golang/go/issues/11100

您可能会发现提到的问题的开放列表c-shared很有帮助:https ://github.com/golang/go/issues?utf8=%E2%9C%93&q=is%3Aissue%20is%3Aopen%20c-shared

今天带大家了解了golang的相关知识,希望对你有所帮助;关于Golang的技术知识我们会一点点深入介绍,欢迎大家关注golang学习网公众号,一起学习编程~

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