当前位置: 首页 > 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前提下),那么就可以先去官方文档看看它所在位置

相关文章:

  • 软考-软件设计师中级备考 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 的详细日志信息
  • 国际观察丨澳大利亚新一届政府面临系列挑战
  • 大众、学术和政治三重框架下的“汉末之变”
  • 热点问答|澳大利亚联邦选举结果有何看点
  • 美国季度GDP时隔三年再现负增长,特朗普政府关税政策对美国经济负面影响或将持续
  • 铁路上海站迎五一假期客流最高峰,今日预计发送77万人次
  • AI世界的年轻人,如何作答未来