前言
Rust 引用 .rlib 庫(kù)
電腦環(huán)境
Windows 10
rustup 1.24.3 (ce5817a94 2021-05-31)
rustc 1.55.0 (c8dfcfe04 2021-09-06)
msvc 2019
代碼編寫
我這里是一步步來(lái)的,從創(chuàng)建一個(gè)新項(xiàng)目開(kāi)始,如果嫌啰嗦,可直接跳到最下面,下載demo源碼看
先創(chuàng)建一個(gè) hello_rlib 項(xiàng)目
cargo new hello_rlib
編寫 src/main.rs
// 導(dǎo)入 test_rlib
// 不過(guò)當(dāng)前會(huì)報(bào)錯(cuò),這個(gè)沒(méi)事,后面走完流程就沒(méi)事了
extern crate test_rlib;
fn main() {
println!("Hello, world!");
// 調(diào)用 test 函數(shù)
test_rlib::test();
}
Cargo.toml package 模塊加上 build.rs, 并且增加 test_rlib 工作成員
[package]
name = "hello_rust"
version = "0.1.0"
edition = "2018"
build = "build.rs"
[dependencies]
[workspace]
members = [
"test_rlib"
]
項(xiàng)目根目錄下創(chuàng)建 build.rs 文件(編譯過(guò)C這些的同學(xué)應(yīng)該不陌生),并編寫以下代碼
fn main() {
// .rlib 路徑
println!("cargo:rustc-link-search=./target/debug/");
}
在項(xiàng)目下,創(chuàng)建 lib 庫(kù)
cargo new test_rlib --lib
編寫 test_rlib/src/lib.rs 代碼
pub fn test() {
println!("hello test");
}
編譯 test_rlib
這里是讓 target/debug/ 目錄下生成 libtest_rlib.rlib 文件
cargo build --package test_rlib
最后 run 項(xiàng)目
cargo run
輸出
Hello, world!
hello test
至此整個(gè)流程就結(jié)束了
坑
VS Code extern crate xxx 報(bào)錯(cuò)
顯示 extern crate test_rlib; 錯(cuò)誤,應(yīng)該是插件 rust-analyzer(版本v0.2.735) 的問(wèn)題,這個(gè)問(wèn)題或許要等待 rust-analyzer 的更新了。
當(dāng)然,如果有發(fā)現(xiàn)其他解決方法,我也會(huì)第一時(shí)間更新該文章
VS Code 無(wú)法進(jìn)行庫(kù)的代碼聯(lián)想
暫無(wú)發(fā)現(xiàn)解決方法
總結(jié)
其實(shí)就兩個(gè)點(diǎn)
- 項(xiàng)目使用
extern crate 庫(kù)名;導(dǎo)入庫(kù) - build.rs
println!("cargo:rustc-link-search=./target/debug/");關(guān)聯(lián).rlib 庫(kù)路徑