Rust 使用 .rlib

前言

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)

  1. 項(xiàng)目使用 extern crate 庫(kù)名;導(dǎo)入庫(kù)
  2. build.rs println!("cargo:rustc-link-search=./target/debug/");關(guān)聯(lián).rlib 庫(kù)路徑

演示項(xiàng)目

github demo

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容