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