从 C++ 走向 rust(四):创建自己的库文件

1. 创建工程

选择合适的文件夹,执行下面的命令:

$ cargo new hello
$ cargo new hellolib --lib

会在当前文件夹下创建两个新的 package 文件夹:hello、hellolib, 其中 hello 是可执行文件,hellolib 是我们要编写的库文件。接下来我们看如何编写库文件,如何调用库文件中的函数。

2. 源代码

hellolib/src/lib.rs:

pub fn say() {
    println!("hello!");
}

hello/src/main.rs:

extern crate hellolib;
fn main() {
    hellolib::say();
}

hello/Cargo.toml: 添加依赖项 hellolib = { path = "../hellolib"}

[package]
name = "hello"
version = "0.1.0"
authors = ["yeping"]
edition = "2018"

# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html

[dependencies]
hellolib = { path = "../hellolib"}

编译运行,一切都妥妥的!

3. 引用编译后的 *.rlib 静态库文件

查看了一下,刚才的那个库文件编译后生成了名为 libhellolib.rlib 的文件,直接复制到 hello 文件夹。打算通过配置 Cargo.toml 文件的依赖项,结果昨晚我连续研究了几个小时一直到凌晨两点都没解决。如果有谁解决了这个问题,请给我留言,在此先表示感谢!

好在可以通过 rustc 编译参数搞定,命令如下:

rustc main.rs —-extern hellolib=./libhellolib.rlib

编译完成后,运行目标程序,OK搞定!

4. 没有了 c++ 的头文件,如何了解 *.rlib 的内容?

还没仔细研究,根据其他语言的经验我觉得三个主要途径吧:

  • 人工编写静态库接口文档
  • 利用 cargo doc 命令生成接口文档
  • 利用反射机制,通过程序自动提取

目前我需要尽快进入生产状态,这个等以后有时间慢慢研究。


原创不易,如果对您有帮助,请关注、点赞,谢谢支持!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

许野平

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值