Rust入门:Rust如何调用C静态库的函数

关于Rust调用C++,因为接口比较复杂,貌似Rust不打算支持。而对于C函数,则相对支持较好。

如果要研究C++/Rust相互关系的话,可以参考:

https://docs.rs/cxx/latest/cxx/

Rust ❤️ C++

这里只对调用C静态库做一个最简短的介绍。

根据官方教材的内容略作一个说明,官方的程序在这里,

Unsafe Rust - The Rust Programming Language

这里我们建一个StaticLib1.cpp的文件,内容如下,

#include <cstdlib>
#include <cinttypes>

extern "C" std::int32_t abs(std::int32_t n) {
    return std::abs(static_cast<std::intmax_t>(n));
}

注意,这里接口是extern "C",也就是标准C接口。

无论是用visual studio 2019或GCC,在windows下都可以生成这样一个静态库:StaticLib1.lib。

然后新建一个rust程序,

cargo new rust-to-c

将rust-to-c/src/main.rs的内容改为,

#[link(name = "StaticLib1")]
extern "C" {
    fn abs(input: i32) -> i32;
}

fn main() {
    unsafe {
        println!("Absolute value of -3 according to C: {}", abs(-3));
    }
}

再拷贝lib到,

rust-to-c/StaticLib1.lib,

然后

cargo build

就可以看到生成了文件

rust-to-c/target/debug/rust-to-c.exe,

用指令

cargo run

就可以得到执行结果了,如下,

参考资料:

FFI - The Rustonomicon

本文结束 

相关推荐

  1. Rust:用 Warp 实现 Restful API 简单示例

    2024-03-11 22:32:01       30 阅读
  2. [初学rust] 07_rust函数

    2024-03-11 22:32:01       35 阅读
  3. Rust - 函数

    2024-03-11 22:32:01       43 阅读
  4. Rust入门

    2024-03-11 22:32:01       52 阅读
  5. Rust入门

    2024-03-11 22:32:01       31 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-03-11 22:32:01       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-03-11 22:32:01       100 阅读
  3. 在Django里面运行非项目文件

    2024-03-11 22:32:01       82 阅读
  4. Python语言-面向对象

    2024-03-11 22:32:01       91 阅读

热门阅读

  1. react中zustand的使用

    2024-03-11 22:32:01       43 阅读
  2. 【WSL2笔记9】Ubuntu 环境ComfyUI 安装使用笔记

    2024-03-11 22:32:01       42 阅读
  3. redis centos7 单点搭建

    2024-03-11 22:32:01       43 阅读
  4. Redis

    Redis

    2024-03-11 22:32:01      32 阅读
  5. 首次实现Go调用C的dll文件

    2024-03-11 22:32:01       42 阅读
  6. 数仓开发-面试二

    2024-03-11 22:32:01       36 阅读
  7. SpringBoot-打印请求的入参和出参

    2024-03-11 22:32:01       35 阅读
  8. docx、excel、word转pdf文件

    2024-03-11 22:32:01       43 阅读
  9. ImGui::SetWindowFontScale 设置局部字体大小

    2024-03-11 22:32:01       32 阅读