Rust与C/C++互操作实战指南
目录
- 1.前言
- 2.动态库调用
- 2.1 动态加载
- 2.2 静态加载
- 3.代码调用
- 4.静态库调用
1.前言
本文原文为:Rust与C/C++互操作实战指南
由于rust诞生时间太短,目前生态不够完善,因此大量的功能库都需要依赖于C、C++语言的历史积累。
而本文将要介绍的便是如何实现rust与c乃至c++之间实现互相调用。
2.动态库调用
首先最方便的还是动态库形式,大量的C语言代码库可以被编译为平台动态库、导出相应的函数,rust直接加载对应的动态库完成调用,这也是目前使用最广的方式。
比如rust中的windows、fltk-rs等等,由于它们之前已经用C语言实现了大量的代码、十几年、乃至几十年的积淀,短时间内难以用rust重写一遍。
所以为了能让rust可以使用它们,常常就是采用动态库调用的方式。
比如在windows系统上,一个最简单常用的winapi:MessagBoxW
,该函数用于弹出一个窗口。
此时如果我们想要在rust代码中调用这个函数(在没有官方提供的windows crate前提下),那么就可以先去官方文档看看它所在位置