首页
学习
活动
专区
圈层
工具
发布
综合排序最热优先最新优先
时间不限
Rust FFI 编程 - FFI 概述
FFI(Foreign Function Interface)是这样一种机制:用一种编程语言写的程序能调用另一种编程语言写的函数(routines)。 FFI 有两种内涵。 FFI 的历史和现状 FFI 这个术语最早来自 Common Lisp 的规范[1]。目前几乎所有严肃编程的语言都有提供 FFI 的支持,但大多数是单向功能。 严格来说,FFI 与 绑定,意义并不相同,绑定可以理解为 FFI 中的一种实现。 不同语言实现 FFI 的方式不尽相同。 所以,虽然都能做 FFI,但是不同语言实现 FFI 的困难程度是不同的。 哪些语言可以方便地对外提供 FFI 库支持 可惜,大部分语言只能单向地“索取”。 结语 本篇描述了 FFI (外部程序接口)的概念和基本原理,并对其历史、内在的困难,以及程序员在 FFI 发展上的各种尝试,都做了简单介绍。
MikeLoveRust
2020-04-14
1.4K0
标签:
Rust FFI 编程 - Rust 语言层面对 FFI 的支持
Rust 语言对 FFI 有比较完善的支持。本节主要讲在基础设施层面,Rust 语言对 FFI 的支持。 标准库 std:os:raw 模块 std:ffi 模块 1. Rust 标准库std::os::raw 和std::ffi 这两个模块提供了这方面的支持。 2.2 标准库 std::ffi 模块 由于 Rust 语言中字符串与 C 语言字符串的不同之处,标准库 std::ffi 模块[3]提供了一组实用的程序,主要用于外部函数接口 FFI 的绑定,以及用在与其他语言传递类 另外,当用作指针时,std::ffi::c_void等同于 C 语言中的void类型。
MikeLoveRust
2020-04-20
3.8K0
标签:
Rust FFI 实践
这里就会涉及到Rust FFI的使用,目前网络上资源也比较少,更多的是Example性质的,大家的文章大同小异,所以我这里就简单写下我这两天折腾的心得。代码还比较烂,欢迎大家指正,但勿喷。 在FFI里,我们可以使用一个空的struct 对象来代替一个实际的Rust对象,然后通过指针来进行应用。什么意思的呢?
用户2936994
2019-05-06
1.4K0
标签:
allwefantasy:Rust FFI 实践
这里就会涉及到Rust FFI的使用,目前网络上资源也比较少,更多的是Example性质的,大家的文章大同小异,所以我这里就简单写下我这两天折腾的心得。代码还比较烂,欢迎大家指正,但勿喷。 在FFI里,我们可以使用一个空的struct 对象来代替一个实际的Rust对象,然后通过指针来进行应用。什么意思的呢?
MikeLoveRust
2019-07-09
9840
标签:
Flutter ffi实践录
实践了一下 Flutter 通过 ffi 包调用 native C/C++ 代码,ffi 代表 Foreign function interface (外部函数接口),入门实践 可以在 Flutter 我们进 ffi 的源码可以看到: 原来 ffi 里面定义了 NativeType 来表示 C/C++ native 层的类型。看一下它的继承结构: 这里提供的全部都是基础类型。 相比于 Android有封装好的 JNI, ffi 相对来说还是比较麻烦的。需要自己提供内存分配和类型转换的实现。 总结 到这里 ffi 的实践就介绍完了。
烧麦程
2022-05-10
2.4K0
标签:
36-Rust 教程 - FFI
核心概念:FFI 是什么? FFI 的定义 FFI(Foreign Function Interface)允许一种语言调用另一种语言的函数。 为什么需要 FFI? 复用现有代码:几十年积累的 C 库,不能扔了吧? // 如果 C 函数需要保存指针,需要手动管理内存 } } 完整示例:安全的字符串 FFI use std::ffi::{CStr, CString}; use std::os::raw::c_char 实战案例:封装 SQLite C 库 让我们看一个真实的 FFI 封装案例——封装 SQLite 的 C API: use std::ffi::{CStr, CString}; use std::os: 参考资料 The Rustonomicon - FFI Rust by Example - FFI cbindgen - 生成 C 头文件 bindgen - 从 C 头文件生成 Rust 绑定
LarryLan
2026-06-05
990
标签:
Dart FFI使用 示例
是什么 Dart FFI(官方地址)是可以在Dart Native平台上运行的Dart移动、命令行和服务器应用上通过Dart FFI来调用C代码的一个技术。 在pubspec.yaml文件中的dependencies中加入ffi、path库 pubspec.yaml name: ffi_sample version: 0.0.1 description: ffi: ^1.1.2 复制代码 3. 写Dart通信代码 在bin/main.dart中调用C import 'dart:ffi'; import 'package:ffi/ffi.dart'; import 'dart:io' show 后面我会继续更新,详细介绍Dart FFI使用,欢迎关注。
玖柒的小窝
2021-12-31
2.6K1
标签:
Rust FFI 编程 - libc crate
libc 是什么 libc 是对各平台的系统库的原始 FFI 绑定。其代码地址在:https://github.com/rust-lang/libc。可以看到,这是 Rust 官方维护的一个库。
MikeLoveRust
2020-04-26
3.4K0
标签:
Rust FFI 编程 - Bindgen 工具介绍
前面我们经历了《Rust FFI 编程 - 基础知识》、《Rust FFI 编程 - 手动绑定 C 库》和《Rust FFI 编程 - Rust 导出共享库》三个大的子系列,Rust FFI 编程的基础部分算靠以段落 为其它动态语言写调用库:Python, Php, Nodejs, Ruby, Go, Java,Objective-C;、 附录:Rust 二进制瘦身等; 另外,会单独开若干大的后续系列,不会放在本 FFI
MikeLoveRust
2020-09-15
3.7K0
标签:
Rust FFI 编程 - nix crate
loop {} } } } 以上代码示例地址:https://github.com/lesterli/rust-practice/tree/master/ffi
MikeLoveRust
2020-05-14
2K0
标签:
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档