Google uses AI technology to translate content into your preferred language. AI translations can contain errors.
使用 bindgen 整合 C/C++
如需從 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_rs/bindgen.sh。
在開發機器上執行指令碼,產生要與建構目標一併提交的 Rust 檔案。
建構產生的程式碼
有了可從 C++ 標頭可靠產生 Rust 檔案的指令碼後,就必須將其新增至建構作業。產生的檔案可以是自己的 rust_library 目標,也可以納入另一個 Rust 目標的子模組,如//src/lib/usb_rs 範例所示。確認包含 bindgen 檔案的程式庫目標,也在 non_rust_deps 中包含適當的外部依附元件。
除非另有註明,否則本頁面中的內容是採用創用 CC 姓名標示 4.0 授權,程式碼範例則為阿帕契 2.0 授權。詳情請參閱《Google Developers 網站政策》。Java 是 Oracle 和/或其關聯企業的註冊商標。
上次更新時間:2025-07-26 (世界標準時間)。
[[["容易理解","easyToUnderstand","thumb-up"],["確實解決了我的問題","solvedMyProblem","thumb-up"],["其他","otherUp","thumb-up"]],[["缺少我需要的資訊","missingTheInformationINeed","thumb-down"],["過於複雜/步驟過多","tooComplicatedTooManySteps","thumb-down"],["過時","outOfDate","thumb-down"],["翻譯問題","translationIssue","thumb-down"],["示例/程式碼問題","samplesCodeIssue","thumb-down"],["其他","otherDown","thumb-down"]],["上次更新時間:2025-07-26 (世界標準時間)。"],[],[]]