当前位置: 首页 > news >正文

ppi rust开发 python调用

创建python的一个测试工程

python -m venv venv 
.\venv\Scripts\activate

 pip install cffi

创建一个rust的lib项目

cargo new --lib pyrust
  • lib.rs

#[no_mangle]
pub extern "C" fn rust_add(x: i32, y: i32) -> i32 {
    x + y
}

  • Cargo.toml
[package]
name = "pyrust"
version = "0.1.0"
edition = "2021"

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

[dependencies]

[lib]
name = "pyrust"
crate-type = ["cdylib"]
  • 构建
cargo build --release

python调用ffi

  • .so for Linux
  • .dll for Windows
  • .dylib for MacOS
import cffi

ffi = cffi.FFI()

ffi.cdef(
  """
    int rust_add(int x, int y);
  """
)

C = ffi.dlopen('./pyrust/target/release/pyrust.dll')

res = C.rust_add(12, 5)
print(res)
python main.py

相关文章:

  • 【软件设计师】普及软件知识产权中的商标法与专利法
  • 【开源】JAVA+Vue.js实现开放实验室管理系统
  • 识别CMS指纹与WAF识别
  • ChatGPT论文指南|ChatGPT论文写作过程中6个润色与查重提示词
  • axios get 请求 url 转码 空格转成+,导致请求失败(前端解决)
  • 机器学习系列——(十六)回归模型的评估
  • 百面嵌入式专栏(面试题)进程管理相关面试题1.0
  • 网易和腾讯面试题精选---性能和优化面试问题
  • 编辑器Zed
  • STM32单片机基本原理与应用(四)
  • 学习笔记:正则表达式
  • C语言贪吃蛇详解
  • 【C语言】位与移位操作符详解
  • 手把手教你开发Python桌面应用-PyQt6图书管理系统-主窗体点击菜单显示功能窗体实现
  • 743. 网络延迟时间
  • NC6X单点登录设计文档说明
  • Spring Cloud Netflix Eureka的参数调优
  • 使用x86架构+Nvidia消费显卡12G显存,搭建智能终端,将大模型本地化部署,说不定是未来方向,开源交互机器人设计
  • annaconda如何切换当前python环境
  • async 与 await(JavaScript)
  • 杭温高铁、沪苏湖高铁明起推出定期票和计次票,不限车次执行优惠折扣
  • 湖北十堰市委副秘书长管聪履新丹江口市代市长
  • 云南昆磨高速发生交通事故致3辆车起火,昆明消防:幸无人员伤亡
  • 商务部:自5月7日起对原产于印度的进口氯氰菊酯征收反倾销税
  • 五一假期上海两大机场客流量超193万人次,创历年同期最高
  • 独家专访|白先勇:我的家乡不是哪个地点,是中国传统文化