专栏名称: 开发内功修炼
飞哥有鹅厂、搜狗 10 年多的开发工作经验。通过本号,我把多年中对于性能的一些深度思考分享给大家。
目录
相关文章推荐
今天看啥  ›  专栏  ›  开发内功修炼

C语言竟可以调用Go语言函数,这是如何实现的?

开发内功修炼  · 公众号  ·  · 2024-05-23 09:36
    

文章预览

大家好,我是飞哥! 今天和大家聊一个问题,一门语言是否可以在同一个进程内调用另外一门语言实现的函数?例如 C 语言是否可以调用 Golang 实现的函数?注意我说的是同进程内调用,跨进程的 IPC、PRC 之类的技术不算。 直接抛出这个问题的答案,同进程跨语言调用是可行的。在各种语言设计时,为了复用其它语言生态中积累下来的大量的代码资产,都会实现跨语言调用的机制。例如在 Golang 中,实现了 cgo 机制来允许 Golang 和 C / C++ 互相调用。在 Java 中,允许通过 JNI 机制来调用 C / C++。 本文就以 C 调用 Golang 为例,来带大家了解下跨语言调用的底层实现原理。 一、C 调用 Go 函数的例子 一个 C 调用 Go 的程序实现大致可以分为下面三个步骤: 第一步:使用 Golang 定义和实现一个函数 第二步:将 Golang 代码编译成一个静态/动态链接库 第三步:在 C ………………………………

原文地址:访问原文地址
快照地址: 访问文章快照
总结与预览地址:访问总结与预览