【Rust】外部函数接口

环境

  • Rust 1.56.1
  • VSCode 1.61.2
  • Windows 7
  • mingw64 7.3.0

概念

参考:https://stackoverflow.com/questions/40833078/how-do-i-specify-the-linker-path-in-rust

示例

Cargo.toml

[package]
name = "rust"
version = "0.1.0"
edition = "2021"
build = "build.rs"

[dependencies]

build.rs

该文件放到项目根目录,src 文件夹的上一层。

fn main() {
    // cargo:rustc-link-search= 后跟上静态库或者动态库的路径,到文件夹
    println!(r"cargo:rustc-link-search=C:\Users\jiangbo\work\rust");
}

main.rs

#[link(name = "add")]
extern "C" {
    fn add(a: i32, b: i32) -> i32;
}

fn add_with_c(a: i32, b: i32) -> i32 {
    unsafe { add(a, b) }
}

fn main() {
    let sum = add_with_c(7, 8);
    println!("{}", sum);
}

add.c

int add(int a, int b)
{
    return a + b;
}

生成库

gcc -c add.c
ar cr libadd.a add.o

总结

了解了 Rust 中外部函数接口的使用。

附录

posted @   jiangbo4444  阅读(189)  评论(0编辑  收藏  举报
编辑推荐:
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!
点击右上角即可分享
微信分享提示