https://www.jianshu.com/p/95884d1d04aa

需要引入cc依赖

Cargo.toml

[package]
name = "rust-call-c"
version = "0.1.0"
authors = ["ice <bsqql123@163.com>"]build = "build.rs"[dependencies]
libc = "0.2"[build-dependencies]
cc = "1.0"

build.rs

extern crate cc;fn main() {cc::Build::new().file("src/double.c").compile("libdouble.a");
}

main.rs

extern crate libc;extern {fn double_input(input: libc::c_int) -> libc::c_int;
}//TODO
fn main() {let input = 4;let output = unsafe { double_input(input) };println!("{} * 2 = {}", input, output);
}

double.c

int double_input(int input) {return input * 2;
}

具体例子在
https://github.com/iceqing/rust-call-c

这里是一个比较完整的例子,有各种语言的示例代码
https://github.com/iceqing/rust-ffi-examples

作者:iceqing
链接:https://www.jianshu.com/p/95884d1d04aa
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

转:Rust 调用C/C++相关推荐

  1. rust 调用 java_自从尝了 Rust,Java 突然不香了

    Rust 是软件行业中相对而言比较新的一门编程语言,如果从语法上来比较,该语言与 C++ 其实非常类似,但从另一方面而言,Rust 能更高效地提供许多功能来保证性能和安全.而且,Rust 还能在无需使 ...

  2. Rust FFI 与C语言互相调用

    Rust FFI 与C语言互相调用 参考 cbindgen 简介 二进制方式构建 脚本构建 Demo程序说明 示例工程: makefile test脚本 基本数据类型 Rust侧 C侧 对象 Rust ...

  3. Rust应用调用C语言动态库

    外部功能接口FFI 虽然高级(脚本)编程语言的功能丰富,表达能力强,但对底层的一些特殊操作的支持并不完善,就需要以其他编程语言来实现.调用其他编程语言的接口,被称为Foreign Function I ...

  4. 使用PyO3从Python调用 Rust:加速Python

    使用 Rust 加速你的 Python: PyO3使从 Python 调用 Rust 代码变得容易.您可以编写 Rust 库,并依靠 PyO3 和生态系统中maturin的支持工具的组合PyO3来编译 ...

  5. gRPC-rs:从 C 到 Rust

    介绍 在上篇文章中,我们讲到 TiKV 为了支持 gRPC,我们造了个轮子 gRPC-rs,这篇文章简要地介绍一下这个库.首先我们来聊聊什么是 gRPC.gRPC 是 Google 推出的基于 HTT ...

  6. gRPC-rs:从 C 到 Rust 1

    介绍 在上篇文章中,我们讲到 TiKV 为了支持 [gRPC],我们造了个轮子 [gRPC-rs],这篇文章简要地介绍一下这个库.首先我们来聊聊什么是 gRPC.gRPC 是 Google 推出的基于 ...

  7. Rust跨界前端全攻略

    作者 | Diomidis Spinellis 译者 | 马超     责编 | 张红月 出品 | CSDN(ID:CSDNnews) 众所周知Rust的学习曲线极为陡峭,学习过程中挫败感极强,像笔者 ...

  8. rust嵌入式key/value数据库

    文章目录 项目介绍 sled 已知问题 如何使用 leveldb-rs 如何使用 rust-rocksdb 如何使用 lmdb-rs 如何使用 功能对比 性能测试对比 插入不同的长度的key/valu ...

  9. Rust 1.0发布一周年,发展回顾与总结

    本文为InfoQ中文站特供稿件,首发地址为: http://www.infoq.com/cn/articles/anniversary-of-the-release-of-rust-1 .如需转载,请 ...

  10. 【Rust日报】2021-08-30 如何来看待 unwrap

    如何来看待 unwrap unwrap 方法可能会让新手感到困惑.一些建议: 可以使用 Expect (&str) 而不是 unwrap() 为 panic 提供上下文. 使用 unwrap ...

最新文章

  1. C语言考研复试知识点整理
  2. 算法周记(一)直接插入排序
  3. java数组扩容arraylist,ArrayList--扩容机制
  4. [Python图像处理] 三十一.图像点运算处理两万字详细总结(灰度化处理、阈值化处理)
  5. 浅谈C#中Control的Invoke与BeginInvoke在主副线程中的执行顺序和区别
  6. 万方数据知识平台 TFHpple +Xpath解析
  7. OpenYurt开箱测评|一键让原生K8s集群具备边缘计算能力
  8. (转载)(收藏)OceanBase深度解析
  9. 普通公司员工的编程水平与阿里巴巴有多大差距?
  10. 数易云备开启虚拟机备份新时代
  11. HTML div元素
  12. mysql重置所有表_Mysql脚本之清空当前数据库下的所有表中数据,并重置自增id
  13. java关键词 英文原文解释,javadoc注释规范(国外英文资料).doc
  14. android之sqlite操作
  15. 与程序员相关的CPU缓存知识
  16. 想从事区块链开发? 你应该这么做
  17. Error: While importing ‘run_app_dev‘, an ImportError was raised.
  18. 文件管理学习:从百度网盘搬家onedrive测评
  19. [ 深度学习 ] —— 优化策略:(1) Label Smoothing Regularization(LSR)
  20. 中台渐入佳境,云徙科技的有所为与有所不为

热门文章

  1. 源码安装Apache http server
  2. getent passwd 不能访问到 ldap 的用户
  3. 数据挖掘标准流程规范
  4. C#_串口通信_SerialPort_一个最基础的串口程序
  5. 关于CAPWAP的一些概念
  6. 在ASP.NET 2.0中直接得到本页面生成的HTML代码(转自孟宪会之精彩世界)
  7. Alpha,Beta,RC,RTM,EVAL,CTP,OEM,RTL,VOL
  8. Codeforces Round #436 (Div. 2) B. Polycarp and Letters
  9. 天瑞地安科技集团:APP软件如何优化
  10. js中不能做变量名的字符