如果您需要從 Rust 呼叫某些 C 或 C++ API,可以使用 bindgen
,從 C & C++ 標頭產生 Rust 程式碼。如需其他說明文件,請參閱 bindgen
使用手冊。
必要條件
我們的 bindgen
預先建構目前以動態方式連結至 clang,因此您需要程式庫搜尋路徑中的 libclang.so
。
在 Debian 版本的系統上,通常可透過 sudo apt install llvm-dev libclang-dev clang
完成。
產生 Rust 程式碼
雖然產生的程式碼會在 Git 中簽到,但所有協作者都必須能輕鬆更新產生的程式碼。這個步驟的第一步是在目標目錄中建立名為 bindgen.sh
的可執行檔案。如需使用預先建構的 bindgen
二進位檔的範例並進一步自訂輸出內容的範例,請參閱 //src/lib/usb_bulk/bindgen.sh
。
在開發機器上執行指令碼,產生要與建構目標修訂的 Rust 檔案。
建構產生的程式碼
當您備妥可透過 C++ 標頭穩定產生 Rust 檔案的指令碼後,就必須將其新增至建構作業。產生的檔案可以是本身的 rust_library
目標,也可以是其他 Rust 目標的子模組,如 //src/lib/usb_bulk
範例所示。確認包含 bindgen
檔案的程式庫目標也在 non_rust_deps
中也包含適當的外部依附元件。