ppi rust开发 python调用

创建python的一个测试工程

python -m venv venv 
.\venv\Scripts\activatepip 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 cffiffi = 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.mzph.cn/news/674630.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【算法】递归入门

文章目录 一、基础知识二、刷题实战1. 汉诺塔问题2. 合并两个有序链表3. 反转链表4. 快速幂 三、技巧总结 一、基础知识 什么是递归: 函数自己调用自己 什么时候能用递归: 有重复子问题 如何看待递归函数: 看作一个黑盒 如何编写递归代码…

Allergo_17_4安装记录

习惯用Allergo软件中的Orcad组件来画原理图,画PCB用PADS PADS的安装记录参考:PADS VX 2.7安装记录-CSDN博客 一、资源: 资源:百度云安装包:Cadence SPB 17.4-2019 安装包 提取码:ajow 二、安装 2.1 右键…

链表算法练习

1、206-单链表反转 思路1:在链表上直接反转,只是需要一个节点存储剩余部分的链表指针 时间复杂度:O(n) 空间复杂度:O(1) const listNode (val,next) >{this.val val;this.next next; }const reverseList (head) >{if(!head || !hea…

百面嵌入式专栏(面试题)C语言面试题22道

沉淀、分享、成长,让自己和他人都能有所收获!😄 📢本篇我们将介绍C语言相关面试题 。 宏定义是在编译的哪个阶段被处理的?答案:宏定义是在编译预处理阶段被处理的。 解读:编译预处理:头文件包含、宏替换、条件编译、去除注释、添加行号。 写一个“标准”宏MIN,这个…

React中的Props:传递数据与组件通信

在React程序中,Props(属性)是组件之间通信的核心机制之一。Props允许将数据从一个组件传递到另一个组件,并在整个应用程序中有效地管理状态和行为。本文将探讨React中的Props,包括其基本概念和用法。 什么是Props&…

c#表达式树(MemberInitExpression)成员初始化表达式

在 C# 中,表达式树是表示代码中的表达式的一种抽象表示形式。它可以用于在运行时动态地构建、分析和执行代码。表达式树提供了一种方式来表示代码中的表达式,而不是直接执行它们。 成员初始化也可以在表达式树中使用,通过表达式树&#xff0…

备战蓝桥杯---搜索(进阶3)

看一道比较难又有趣的题: 下面是分析: 我们不妨把属性值看成点,一个装备可以看成一条边(只能选一个端点)不存在有装备属性值的当成一个点,于是我们便形成了树或图,如果是树的话,有一…

2024年的VUE2下的无效指令npm install --save vue-i18n

vue官网已经声明了不再维护vue2, vue-i18n安装依赖的时候就只接安装vue3的vue-i18, 直接报错: > npm install --save vue-i18n npm ERR! code ERESOLVE npm ERR! ERESOLVE unable to resolve dependency tree npm ERR! npm ERR! While resolving: yudao-ui-admin…

XSS攻击 - 不要再硬背了

XSS攻击是所有程序员都知道的一件事,它也是前后端面试的一个常考点。也正如标题所说,很多人在背它,为什么要背它?这点我深有感悟,最近我突破了那个key,所以我想将它分享出来。 XSS攻击,其实都是…

字节3面真题,LeetCode上hard难度,极具启发性题解

文章目录 🚀前言🚀LeetCode:41. 缺失的第一个正整数🚀思路🚀整个代码思路串一下🚀Code 🚀前言 铁子们好啊!阿辉来讲道题,这道题据说是23年字节3面真题,LeetC…

RabbitMQ-3.发送者的可靠性

发送者的可靠性 3.发送者的可靠性3.1.生产者重试机制3.2.生产者确认机制3.3.实现生产者确认3.3.1.开启生产者确认3.3.2.定义ReturnCallback3.3.3.定义ConfirmCallback 3.发送者的可靠性 首先,我们一起分析一下消息丢失的可能性有哪些。 消息从发送者发送消息&#…

前后端分离项目:前端的文件夹应该叫什么名字,后端呢

在前后端分离的项目中,为了提高项目的可读性和易管理性,给前端和后端的文件夹选择合适的名字是很重要的。这里提供一些建议,但请记住,最终的命名应该根据你的团队习惯、项目特性以及可能的公司规定来决定。 ### 前端文件夹命名建…

主键、候选键与外键的关系

主键、候选键与外键的关系 主键、候选键与外键的关系? 一个表的外键只能是其他表的主键吗?还是其他表的候选键也可以? 比如:员工表的字段中包含员工ID和员工账号,其中员工ID为主键,员工账号为普通候选键&am…

【状态管理一】概览:状态使用、状态分类、状态具体使用

文章目录 一. 状态使用概览二. 状态的数据类型1. 算子层面2. 接口层面2.1. UML与所有状态类型介绍2.2. 内部状态:InternalKvState 将知识与实际的应用场景、设计背景关联起来,这是学以致用、刨根问底知识的一种直接方式。 本文介绍 状态数据管理&#x…

pytorch入门第一天

今天作为入门pytorch的第一天。打算记录每天学习pytorch的一些理解和笔记,以用来后面回顾。当然如果能帮到和我一样的初学者,那也是不胜荣幸。作为一名初学者,难免有些地方会现错误,欢迎各位大佬指出 预备知识 这里主要介绍pyto…

【数据结构】堆(创建,调整,插入,删除,运用)

目录 堆的概念: 堆的性质: 堆的存储方式: 堆的创建 : 堆的调整: 向下调整: 向上调整: 堆的创建: 建堆的时间复杂度: 向下调整: 向上调整&#xff…

2023年06月CCF-GESP编程能力等级认证C++编程二级真题解析

一、单选题(每题2分,共30分) 第1题 高级语言编写的程序需要经过以下()操作,可以生成在计算机上运行的可执行代码。 A. 编辑 B. 保存 C. 调试 D. 编译 答案:D 第2题 能够实现下面流程图功能的伪代码是( )。 A. if 条件判断 then 语句块 B. if 条件判断 then 什么…

vue项目打包部署到flask等后端服务里面,实现前后端不分离部署,解决空白页面和刷新页面not fount问题

1. 编译模式一定要设置为esnext,否则会报错: Strict MIME type checking is enforced for module scripts per HTML spec.Expected a JavaScript module script but the server responded with a MIME type of "text/plain". 具体解释可以看vi…

Leetcode 第 382 场周赛题解

Leetcode 第 382 场周赛题解 Leetcode 第 382 场周赛题解题目1:3019. 按键变更的次数思路代码复杂度分析 题目2:3020. 子集中元素的最大数量思路代码复杂度分析 题目3:3021. Alice 和 Bob 玩鲜花游戏思路代码复杂度分析 题目4:302…

停车场|基于Springboot的停车场管理系统设计与实现(源码+数据库+文档)

停车场管理系统目录 目录 基于Springboot的停车场管理系统设计与实现 一、前言 二、系统功能设计 三、系统实现 1、管理员功能实现 (1)车位管理 (2)车位预订管理 (3)公告管理 (4&#…