当前位置: 首页 > 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
http://www.dtcms.com/a/8149.html

相关文章:

  • 【软件设计师】普及软件知识产权中的商标法与专利法
  • 【开源】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)
  • C语言——深入理解指针(3)
  • LLaMA 模型中的Transformer架构变化
  • 【最详解】如何进行点云的凹凸缺陷检测(opene3D)(完成度80%)
  • 什么是网络渗透,应当如何防护?
  • Pymysql之Cursor常用API
  • 【Android新版本兼容】onBackPressed()方法被弃用的解决方案
  • FPS游戏框架漫谈第二十天
  • kafka客户端生产者消费者kafka可视化工具(可生产和消费消息)
  • android retrofit上传List集合数据
  • 矩阵的正定(positive definite)性质的作用