iwxt · 多语言程序教程
← 返回博客

不同的语言,
如何运行在同一个程序里?

你已经能写 add(20, 22)。现在换一个问题:如果 add 的实现来自另一种语言,C++ 还可以调用它吗?

一个项目可能既要调用成熟的库,又要做界面、统计和高效计算。不同部分选用合适的语言,是为了复用已有成果、减少开发工作;收益值得时,才增加语言之间的边界。

下面从这个动机出发,把编译、链接和二进制接口连成一条线,最后亲手做出一个输出 42 的混合语言程序。

开始探索
C++ 主程序
main.cppadd(20, 22);
C 函数实现
add.creturn a + b;
./demo输出:42

先分清:多种语言,怎样协作?

不同进程:消息通信

前端 JavaScript⇄ HTTP ⇄后端 Python

各自运行,把请求和结果序列化后传递。双方无需使用同一种语言,也不需要被链接成同一个程序。

同一进程:函数调用

C++ 主程序→ 调用 →C / Rust 库

代码被编译为兼容的目标文件或库,在同一进程内调用。接口两侧需要对齐符号、类型和调用约定。

这页会带你走过:函数在哪里实现 → 源码如何变成目标文件 → 链接器如何找到实现 → 跨语言调用还需要遵守什么约定。示例默认你见过变量、函数和简单 C++ 代码;不要求先学汇编。

想一想:浏览器向 Python 后端发送 HTTP 请求,属于哪一种?