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

Rust与C/C++互操作实战指南

目录

    • 1.前言
    • 2.动态库调用
      • 2.1 动态加载
      • 2.2 静态加载
    • 3.代码调用
    • 4.静态库调用

1.前言

本文原文为:Rust与C/C++互操作实战指南

由于rust诞生时间太短,目前生态不够完善,因此大量的功能库都需要依赖于C、C++语言的历史积累。

而本文将要介绍的便是如何实现rust与c乃至c++之间实现互相调用。

2.动态库调用

首先最方便的还是动态库形式,大量的C语言代码库可以被编译为平台动态库、导出相应的函数,rust直接加载对应的动态库完成调用,这也是目前使用最广的方式。

比如rust中的windows、fltk-rs等等,由于它们之前已经用C语言实现了大量的代码、十几年、乃至几十年的积淀,短时间内难以用rust重写一遍。

所以为了能让rust可以使用它们,常常就是采用动态库调用的方式。

比如在windows系统上,一个最简单常用的winapi:MessagBoxW,该函数用于弹出一个窗口。

此时如果我们想要在rust代码中调用这个函数(在没有官方提供的windows crate前提下),那么就可以先去官方文档看看它所在位置

http://www.dtcms.com/a/170553.html

相关文章:

  • 软考-软件设计师中级备考 10、文件管理、设备管理
  • 《MATLAB实战训练营:从入门到工业级应用》工程实用篇-自动驾驶初体验:车道线检测算法实战(MATLAB2016b版)
  • 【Linux】日志与策略模式、线程池
  • 基于k8s系统的API网关-kong网关
  • Kubernetes(k8s)学习笔记(六)--KubeSphere前置环境安装
  • PowerShell 备份 Windows10/11 还原计算机驱动程序SOP
  • 复杂网络系列:第 5 部分 — 社区检测和子图
  • USB布局布线
  • 【iOS】 方法交换
  • C++负载均衡远程调用学习之Agent代理模块基础构建
  • 修复笔记:SkyReels-V2 项目中的 torch.load 警告
  • 使用 IDEA + Maven 搭建传统 Spring MVC 项目的详细步骤(非Spring Boot)
  • Linux中的粘滞位和开发工具和文本编辑器vim
  • 神经网络发展的时间线——积跬步至千里
  • terraform resource创建了5台阿里云ecs,如要使用terraform删除其中一台主机,如何删除?
  • 【ThinkBook 16+ 电脑重做系统type-c接口部分功能失效解决方案】
  • Ubuntu 系统上广受好评的浏览器推荐
  • Python 数据智能实战 (12):效果评估 - 超越传统指标
  • Monorepo项目多项目一次性启动工具对比与实践
  • 修复笔记:获取 torch._dynamo 的详细日志信息
  • 如何使用python保存字典
  • 【Java idea配置】
  • 深入了解Linux系统—— 环境变量
  • 8.2 GitHub企业级PDF报告生成实战:ReportLab高级技巧与性能优化全解析
  • 【PostgreSQL数据分析实战:从数据清洗到可视化全流程】2.4 正则表达式与文本处理(LIKE/REGEXP_MATCHES)
  • 【机器学习案列-22】基于线性回归(LR)的手机发布价格预测
  • 【操作系统】死锁
  • 理解MAC-IP映射、ARP协议与ARP欺骗及防护
  • PCIe TLP | 报头 / 包格式 / 地址转换 / 寄存器 / 配置空间类型
  • Java变量学习笔记