目錄
- 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前提下),那么就可以先去官方文檔看看它所在位置