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

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

本文结束 

相关文章:

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

关于Rust调用C&#xff0c;因为接口比较复杂&#xff0c;貌似Rust不打算支持。而对于C函数&#xff0c;则相对支持较好。 如果要研究C/Rust相互关系的话&#xff0c;可以参考&#xff1a; https://docs.rs/cxx/latest/cxx/ Rust ❤️ C 这里只对调用C静态库做一个最简短的介…...

阿里云Linux系统MySQL8忘记密码修改密码

相关版本 操作系统&#xff1a;Alibaba Cloud Linux 3.2104 LTS 64位MySQL&#xff1a;mysql Ver 8.0.34 for Linux on x86_64 (Source distribution) MySQL版本可通过下方命令查询 mysql --version一、修改my.cnf文件 文件位置&#xff1a;etc/my.cnf进入远程连接后可以打…...

初识C语言—字符串、转义字符、注释

字符串 字符串就是一串字符 用英文双引号括起来的字符 int main() {"dasgfhjkasg\n""hello world!"return 0; } 字符串的结束标志是\0这个转义字符 如何证明呢&#xff1f; int main() {//字符数组 - 数组是一组相同类型的元素char arr[] "hel…...

洛谷 P1731 [NOI1999] 生日蛋糕

题目 题目链接 自己没看题解写的&#xff0c;摸石头过河&#xff0c;解释一下 首先&#xff0c;输入输出都是正整数。先搞定输入&#xff0c;再判断条件&#xff0c;如果无解&#xff0c;输出0&#xff0c;否则输出蛋糕外表面面积Q&#xff08;这里用全局变量&#xff0c;开l…...

操作教程|使用MeterSphere对恒生UFX系统进行压力测试

恒生UFX&#xff08;United Finance Exchange&#xff0c;统一金融交换&#xff09;系统&#xff08;以下简称为“UFX系统”&#xff09;&#xff0c;是一款帮助证券公司统一管理外部接入客户的系统&#xff0c;该系统整体上覆盖了期货、证券、基金、银行、信托、海外业务等各类…...

算法中的数学知识

文章目录 算法中的数学知识约数约数个数约数之和 筛法求质数阶乘分解解法一解法二&#xff1a; 欧拉函数基本模板筛法求欧拉函数大数据幂的欧拉函数 快速幂费马小定理快速幂求逆元数论分块例题&#xff1a;[因数平方和](https://www.acwing.com/problem/content/4665/)分析:具体…...

2024高频前端面试题 Vue2 和 Vue3 篇

HTML和CSS篇&#xff1a;2024高频前端面试题 HTML 和 CSS 篇-CSDN博客 JavaScript 和 ES6 篇&#xff1a; 2024高频前端面试题 JavaScript 和 ES6 篇-CSDN博客 * Vue2 和 Vue3的区别&#xff1a; 1&#xff09;双向数据绑定原理的区别 2&#xff09;根节点的不同 Vue2只能一…...

vue,Promise备忘

网址 https://www.promisejs.org/ 记录 在Vue.js或者其他JavaScript项目中&#xff0c;Promise 是一种处理异步操作的标准机制&#xff0c;用于解决传统的回调地狱问题&#xff0c;提供了一种更优雅、链式调用的编程模型。Promise对象代表一个异步操作的结果&#xff0c;它可…...

软件测试工程师职位笔试知识点细节(2)

一、软件测试分为哪几个阶段&#xff0c;生命周期&#xff1f; 软件测试一般分为单元测试、集成测试和系统测试。 需求分析→测试计划→测试设计、软件开发→测试执行→测试评估 二、一条软件缺陷&#xff08;或者叫Bug&#xff09;记录都包含了哪些内容&#xff1f; 一条Bug…...

大数据冷热分离方案

数据冷热分离方案 1、背景 ​ 随着业务的发展&#xff0c;在线表中的数据会逐渐增加。常规业务都有冷热数据现象明显的特性&#xff08;需要访问的都是近期产生的热数据&#xff1b;时间久远的冷数据出于备份、备案溯源等诉求会进行在线保留&#xff09;。在业务表数据 量可控…...

Vue3中Vue Router的使用区别

在 Vue 3 中&#xff0c;useRouter 和 useRoute 是两个用于 Vue Router 的 Composition API 函数&#xff0c;它们的用途和返回的对象不同&#xff0c;接下来详细了解一下它们的区别以及如何正确使用它们。 useRouter useRouter 用于获取 router 实例&#xff0c;这个实例提供…...

Open CASCADE学习|读取STEP模型文件到XDE中

目录 1、XDE组件简介 2、读取STEP模型文件到XDE中的步骤 3、案例 1、XDE组件简介 Open CASCADE的XDE&#xff08;扩展数据交换&#xff09;组件是一个关键的工具&#xff0c;它允许用户通过转换附加到几何BREP&#xff08;边界表示&#xff09;数据的附加数据来扩展数据交换…...

flink:自定义数据分区

shuffle随机地将数据分配到下游的子任务。 rebalance用round robbin模式将数据分配到下游的子任务。 global把所有的数据都分配到一个分区。 partitionCustom: 自定义数据分区。 package cn.edu.tju.demo; import org.apache.flink.api.common.functions.; import org.apache…...

力扣图论篇

以下思路来自代码随想录以及官方题解。 文章目录 797.所有可能的路径200.岛屿数量130.被围绕的区域1020.飞地的数量 797.所有可能的路径 给你一个有 n 个节点的 有向无环图&#xff08;DAG&#xff09;&#xff0c;请你找出所有从节点 0 到节点 n-1 的路径并输出&#xff08;不…...

图腾柱PFC工作原理:一张图

视屏链接&#xff1a; PFC工作原理...

MongoDB开启事务

MongoDB开启事务 配置单节点。到路径C:\Program Files\MongoDB\Server\4.0\bin 使用记事本以管理员权限打开文件mongod.cfg添加如下配置&#xff1a; replication:replSetName: rs02. 重启MongoDB服务 3. 重启后执行命令 rs.initiate()...

风车IM即时通讯系统APP源码DJ2403版完整苹果安卓教程

关于风车IM&#xff0c;你在互联网上能随便下载到了基本都是残缺品&#xff0c; 经过我们不懈努力最终提供性价比最高&#xff0c;最完美的版本&#xff0c; 懂货的朋友可以直接下载该版本使用&#xff0c;经过严格测试&#xff0c;该版本基本完美无缺。 1.宝塔环境如下: Ngin…...

新增流计算计数窗口,TDengine 3.2.3.0 八大板块功能更新

自发布以来&#xff0c;TDengine 3.0 版本在研发人员和社区用户的共同努力下不断优化&#xff0c;产品的稳定性和易用性获得了大幅提升&#xff0c;在知轮科技的智慧轮胎系统、黑格智能 3D 打印业务、韵达快递业务、中国地震台网中心、中移物联智慧出行场景等众多企业项目中获得…...

【架构笔记3】做“用心”之人

凡事就怕“用心”二字&#xff0c;但是用心做事&#xff0c;其实如果没有前提和详情&#xff0c;这本就是一句正确的废话&#xff0c;在一些项目开发和落地过程中&#xff0c;我也有了一些新的体会&#xff0c;自认为不是多余。 我觉得心这个词至少包含四个含义&#xff1a;“…...

前端加密面面观:常见场景与方法解析

&#x1f90d; 前端开发工程师、技术日更博主、已过CET6 &#x1f368; 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 &#x1f560; 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》 &#x1f35a; 蓝桥云课签约作者、上架课程《Vue.js 和 E…...

防静电门禁(ESD 闸机)系统深度技术方案:原理、硬件、接线、调试、故障排查

本文从硬件原理、电气接口、通信协议、联动逻辑、调试步骤、故障树六个维度&#xff0c;完整拆解防静电门禁闸机系统&#xff08;ESD&#xff09; 的技术实现与工程落地&#xff0c;内容适用于&#xff1a;电子 / 半导体车间 EHS、设备、IE 工程师智能化工程、安防系统 集成商 …...

PCB设计实战:机械孔选型、布局与可靠性设计全解析

1. 机械孔的基础认知与分类详解 机械孔在PCB设计中就像建筑物的承重柱&#xff0c;既要承担物理支撑又要兼顾功能传导。我第一次设计带大功率器件的PCB时&#xff0c;就因为机械孔选型不当导致散热不良&#xff0c;整个项目返工。现在回头看&#xff0c;机械孔的选择其实有章可…...

给RK3326安卓8.1系统“动手术”:从默认中文到开机动画的保姆级定制教程

给RK3326安卓8.1系统“动手术”&#xff1a;从默认中文到开机动画的保姆级定制教程 当一块搭载RK3326的开发板握在手中时&#xff0c;原生系统往往像一件未裁剪的成衣——功能完整却缺乏个性。本文将带你完成一场精准的"系统整形手术"&#xff0c;从语言本地化到视觉…...

如何利用over-golang与Protobuf实现高效序列化与RPC通信:完整指南

如何利用over-golang与Protobuf实现高效序列化与RPC通信&#xff1a;完整指南 【免费下载链接】over-golang Golang相关&#xff1a;[审稿进度80%]Go语法、Go并发思想、Go与web开发、Go微服务设施等 项目地址: https://gitcode.com/gh_mirrors/ov/over-golang 在现代软件…...

Gitee:数字化转型浪潮中企业项目管理的战略选择

数字化转型已成为企业提升竞争力的必由之路&#xff0c;而高效的项目管理工具则是这一转型过程中的关键支撑。在众多选择中&#xff0c;Gitee凭借其独特的"开发-管理-部署"一体化架构&#xff0c;正成为越来越多企业的首选解决方案。这个源自中国的DevOps平台不仅解决…...

快速掌握zhihu-api:知乎非官方API终极指南

快速掌握zhihu-api&#xff1a;知乎非官方API终极指南 【免费下载链接】zhihu-api Unofficial API for zhihu. 项目地址: https://gitcode.com/gh_mirrors/zhi/zhihu-api 在当今数据驱动的时代&#xff0c;获取知乎平台上的高质量内容数据变得至关重要。zhihu-api作为一…...

工业自动化必备:C#+Modbus TCP控制伺服电机保姆级教程

工业自动化实战&#xff1a;C#与Modbus TCP协议在伺服电机控制中的深度应用 在智能制造浪潮席卷全球的今天&#xff0c;工业自动化技术正以前所未有的速度重塑着生产流程。作为自动化系统的核心执行部件&#xff0c;伺服电机凭借其高精度、快速响应的特性&#xff0c;已成为现代…...

3分钟学会本地导出浏览器Cookie:Get cookies.txt LOCALLY终极指南

3分钟学会本地导出浏览器Cookie&#xff1a;Get cookies.txt LOCALLY终极指南 【免费下载链接】Get-cookies.txt-LOCALLY Get cookies.txt, NEVER send information outside. 项目地址: https://gitcode.com/gh_mirrors/ge/Get-cookies.txt-LOCALLY 你是否曾为调试网站或…...

终极指南:如何用BiliTools构建你的个人B站资源图书馆 [特殊字符]

终极指南&#xff1a;如何用BiliTools构建你的个人B站资源图书馆 &#x1f3ac; 【免费下载链接】BiliTools A cross-platform bilibili toolbox. 跨平台哔哩哔哩工具箱&#xff0c;支持下载视频、番剧等等各类资源 项目地址: https://gitcode.com/GitHub_Trending/bilit/Bil…...

RV绝缘圆形端子铜鼻子AI视觉检测参数

在电气连接与线束加工领域&#xff0c;RV绝缘圆形端子&#xff08;俗称铜鼻子&#xff09; 用于电缆终端的可靠连接。其质量直接影响导电性、抗拉强度及绝缘安全性。AI视觉检测设备通过高分辨率CCD成像与深度学习算法&#xff0c;对端子的关键参数进行全自动测量与判定&#xf…...