使用Rust庫bindgen之Hello World(附代碼)

使用Rust庫bindgen

本文展示如何使用Rust庫bindgenbindgen是一個非常好用的工具,它可以自動地爲你的C語言庫生成binding。下面我們就開始吧!

創建工程

首先在你要創建工程的地方使用cargo new rust_bindgen_example,該命令會自動生成一個名爲 rust_bindgen_example 的工程文件夾,

C部分

src文件夾中分別創建了 hello.chello.h兩個文件,其提供了函數hello_from_c()的實現,該函數在標準輸出中打印“Hello from C ”。
最後在工程根目錄創建 wrapper.h,該文件包含了 hello.h,最後提供給bindgen進行bind。
注:博主將C生成的庫文件libhello.a放在了目錄build中,見Makefile

Rust部分

創建文件 build.rs文件,其中println!("cargo:rustc-link-search={}", lib_path.display());告訴了Rustc編譯器應該在哪裏去找庫文件。博主的是build文件夾。
src/main.rs文件中,包含 bindgen 的輸出文件 binding.rs,並使用一個 unsafe 函數對 C 提供的函數進行包裝(這是Rust推薦的使用方式)。最後在 main函數中調用該函數即可。

代碼

博主已將整個工程託管在github上,歡迎 issue 和 PR。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章