首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • PHP的FFI拓展使用笔记

    从 编 译 C 动 态 库 到 php 的 FFI 拓 展 使 用要求版本FFI *没有安装 FFI 拓展,自行安装编写C代码新建 demo.c 文件// 包含c的stdio库(根据实际情况添加文件头) "demo.so";// 创建 FFI 对象$ffi = FFI::cdef($header_file, $library_file);// 调用函数cAdd$add = $ffi->cAdd(1, 2 php...忽略// 直接创建 C 的结构体,$demo_t得到是一个php对象类型// $ffi->new可以创建C的任意数据类型$demo_t = $ffi->new('struct demo_t' ($callback);linux 编译安装 FFI 拓展当然这个是确保已经安装了 php 环境下从官方下载PHP源码,解压,进入ext/ffi 目录apt install build-essential php -m | grep FFI# 出现 FFI 表示安装成功FFI实战项目php-webui-composer 绑定 webui 库实现跨平台桌面开发php-windows-robot php桌面自动化

    37820编辑于 2024-08-28
  • 来自专栏Rust语言学习交流

    Rust FFI 编程 - FFI 概述

    FFI 的历史和现状 FFI 这个术语最早来自 Common Lisp 的规范[1]。目前几乎所有严肃编程的语言都有提供 FFI 的支持,但大多数是单向功能。 严格来说,FFI 与 绑定,意义并不相同,绑定可以理解为 FFI 中的一种实现。 不同语言实现 FFI 的方式不尽相同。 所以,虽然都能做 FFI,但是不同语言实现 FFI 的困难程度是不同的。 哪些语言可以方便地对外提供 FFI 库支持 可惜,大部分语言只能单向地“索取”。 Foreign_function_interface#cite_note-1 [2]: https://zh.wikipedia.org/wiki/%E8%B0%83%E7%94%A8%E7%BA%A6% E5%AE%9A [3]: https://zh.wikipedia.org/wiki/X86%E8%B0%83%E7%94%A8%E7%BA%A6%E5%AE%9A#cdecl [4]: https:

    1.3K20发布于 2020-04-14
  • 来自专栏Rust语言学习交流

    Rust FFI 编程 - Rust 语言层面对 FFI 的支持

    Rust 语言对 FFI 有比较完善的支持。本节主要讲在基础设施层面,Rust 语言对 FFI 的支持。 标准库 std:os:raw 模块 std:ffi 模块 1. 2.2 标准库 std::ffi 模块 由于 Rust 语言中字符串与 C 语言字符串的不同之处,标准库 std::ffi 模块[3]提供了一组实用的程序,主要用于外部函数接口 FFI 的绑定,以及用在与其他语言传递类 另外,当用作指针时,std::ffi::c_void等同于 C 语言中的void类型。 /s/ZX_0G6JcNMusLz6JJOkNSg

    3.6K10发布于 2020-04-20
  • 来自专栏老九学堂

    拓展】学习Java的6个技巧

    6.每个月至少研究一个技术点 经常专研一个技术点,比如js的一个矩阵算法,实现色彩的霓虹灯变换;亦或是,Java多线程内存自动优化技术。

    63040发布于 2018-03-01
  • 来自专栏祝威廉

    Rust FFI 实践

    这里就会涉及到Rust FFI的使用,目前网络上资源也比较少,更多的是Example性质的,大家的文章大同小异,所以我这里就简单写下我这两天折腾的心得。代码还比较烂,欢迎大家指正,但勿喷。 在FFI里,我们可以使用一个空的struct 对象来代替一个实际的Rust对象,然后通过指针来进行应用。什么意思的呢?

    1.3K20发布于 2019-05-06
  • 来自专栏Rust语言学习交流

    allwefantasy:Rust FFI 实践

    这里就会涉及到Rust FFI的使用,目前网络上资源也比较少,更多的是Example性质的,大家的文章大同小异,所以我这里就简单写下我这两天折腾的心得。代码还比较烂,欢迎大家指正,但勿喷。 在FFI里,我们可以使用一个空的struct 对象来代替一个实际的Rust对象,然后通过指针来进行应用。什么意思的呢?

    92640发布于 2019-07-09
  • 来自专栏半行代码

    Flutter ffi实践录

    实践了一下 Flutter 通过 ffi 包调用 native C/C++ 代码,ffi 代表 Foreign function interface (外部函数接口),入门实践 可以在 Flutter 我们进 ffi 的源码可以看到: 原来 ffi 里面定义了 NativeType 来表示 C/C++ native 层的类型。看一下它的继承结构: 这里提供的全部都是基础类型。 相比于 Android有封装好的 JNI, ffi 相对来说还是比较麻烦的。需要自己提供内存分配和类型转换的实现。 总结 到这里 ffi 的实践就介绍完了。

    2.4K20编辑于 2022-05-10
  • 来自专栏jiajia_deng

    ES6 学习笔记之对象的拓展

    // 等同于 var baz = {foo: foo}; 另外一个例子 function f_es5(x, y) { return { x: x, y: y }; } function f_es6( console.log(f_es5(1, 2)); // { x: 1, y: 2 } console.log(f_es5(3, 4)); // { x: 3, y: 4 } 方法的简洁表示法 ES6 '; } } var obj_es6 = { method() { return 'Hello ES6 style. ,而 ES6 中允许使用表达式。 obj.showMessage(); // Hi, this is a ES6 function.

    20940编辑于 2023-10-21
  • 来自专栏各类技术文章~

    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使用,欢迎关注。

    2.5K40编辑于 2021-12-31
  • 来自专栏jiajia_deng

    ES6 学习笔记之函数的拓展

    本文记录了一些 ES6 函数相关的改动,比较重要的就是箭头函数及箭头函数内部 this 的变化,其他一些不常见的概念我也仅仅是看了看,并没有实际操作测试效果。待需要用到的时候再研究。 var args = [1, 2]; f(-1, ...args, 2, ...[3]); 替代 ES5 的 apply,ES5 中如果要将一个数组转为参数传递,需要用到 apply 方法,而 ES6拓展运算符则替代了这一功能。 (arr1); // [ 1, 2, 3, 4, 5, 6 ] // ES6 写法 var arr3 = [1, 2, 3]; var arr4 = [4, 5, 6]; arr3.push(...arr4 / ES6 var f_es6 = v => v; 如果不需要参数或需要多个参数,则吧多个参数用括号括起来 var f_es6_1 = () => 5; // 等同于 var f_es5_1 = function

    34310发布于 2020-01-05
  • 来自专栏jiajia_deng

    ES6 学习笔记之对象的拓展

    // 等同于 var baz = {foo: foo}; 另外一个例子 function f_es5(x, y) { return { x: x, y: y }; } function f_es6( console.log(f_es5(1, 2)); // { x: 1, y: 2 } console.log(f_es5(3, 4)); // { x: 3, y: 4 } 方法的简洁表示法 ES6 '; } } var obj_es6 = { method() { return 'Hello ES6 style. ,而 ES6 中允许使用表达式。 obj.showMessage(); // Hi, this is a ES6 function.

    40810发布于 2020-01-05
  • 来自专栏jiajia_deng

    ES6 学习笔记之数组的拓展

    ES6 在数组上改变还是比较多的,主要是为了弥补 ES5 一些方法的不足或新增一些方法,但大体这些方法在其他语言中也都见过,所以操作和使用起来不难,可能名字不一样,但看一看就知道如何使用了。 Array.from() 方法 const arrayLike = { '0': 'a', '1': 'b', '2': 'c', 'length': 3 }; // ES6 写法 let

    43910发布于 2020-01-05
  • 来自专栏Rust语言学习交流

    Rust FFI 编程 - libc crate

    libc 是什么 libc 是对各平台的系统库的原始 FFI 绑定。其代码地址在:https://github.com/rust-lang/libc。可以看到,这是 Rust 官方维护的一个库。

    3.3K21发布于 2020-04-26
  • 来自专栏Rust语言学习交流

    Rust FFI 编程 - Bindgen 工具介绍

    前面我们经历了《Rust FFI 编程 - 基础知识》、《Rust FFI 编程 - 手动绑定 C 库》和《Rust FFI 编程 - Rust 导出共享库》三个大的子系列,Rust FFI 编程的基础部分算靠以段落 为其它动态语言写调用库:Python, Php, Nodejs, Ruby, Go, Java,Objective-C;、 附录:Rust 二进制瘦身等; 另外,会单独开若干大的后续系列,不会放在本 FFI

    3.6K20发布于 2020-09-15
  • 来自专栏程序猿的大杂烩

    Java并发编程(6)- J.U.C组件拓展

    在Java中一般通过继承Thread类或者实现Runnable接口这两种方式来创建线程,但是这两种方式都有个缺陷,就是不能在执行完成后获取执行的结果,因此Java 1.5之后提供了Callable和Future接口,通过它们就可以在任务执行完毕之后得到任务的执行结果。

    44630发布于 2020-09-23
  • 来自专栏jiajia_deng

    ES6 学习笔记之字符串拓展

    字符换相关的拓展在书中有非常详细的介绍,我这里仅记录一些可能会用到的函数或方法,以备后用。 字符串与变量拼接(模板字符串) ES5 字符串拼接使用加号: for (var i = 0; i < 100; i++) { console.log('活到 ' + i + ' 岁'); } 在 ES6

    43930发布于 2020-01-05
  • 来自专栏Rust语言学习交流

    Rust FFI 编程 - nix crate

    loop {} } } } 以上代码示例地址:https://github.com/lesterli/rust-practice/tree/master/ffi

    2K20发布于 2020-05-14
  • 来自专栏海仔技术驿站

    前端成神之路-es6-ES6概念&新增语法&内置对象拓展

    ES6语法 目标 能够说出使用let关键字声明变量的特点 能够使用解构赋值从数组中提取值 能够说出箭头函数拥有的特性 能够使用剩余参数接收剩余的函数参数 能够使用拓展运算符拆分数组 能够说出模板字符串拥有的特性 ES6相关概念(★★) 什么是ES6 ES 的全称是 ECMAScript , 它是由 ECMA 国际标准化组织,制定的一项脚本语言的标准化规范。 为什么使用 ES6 ? 每一次标准的诞生都意味着语言的完善,功能的加强。JavaScript语言本身也有一些令人不满意的地方。 变量提升特性增加了程序运行时的不可预测性 语法过于松散,实现相同的功能,不同的人可能会写出不同的代码 ES6新增语法 let(★★★) ES6中新增了用于声明变量的关键字 let声明的变量只在所处于的块级有效 [1, 2, 3].includes(2) // true [1, 2, 3].includes(4) // false String 的扩展方法 模板字符串(★★★) ES6新增的创建字符串的方式,

    63520发布于 2021-01-29
  • 来自专栏开源技术小栈

    PHP如何编译启用 FFI 扩展

    FFI PHP Foreign Function Interface (FFI) 是 PHP 7.4 引入的一个新特性,它允许 PHP 代码调用 C 语言的库函数,而无需编写额外的扩展。 现在,使用 FFI,你可以直接调用这些库,而无需编写和维护扩展。 两种启用方式 编译安装PHP的时候开启FFI扩展--with-ffi 已经安装PHP,通过扩展来编译安装FFI扩展 编译开启FFI . CREDITS ffi_arginfo.h ffi.c ffi.g ffi_parser.c ffi.stub.php php_ffi.h tests 生成 . ffi.enable=true 检查是否安装成功 /usr/local/php-8.3.1/bin/php -m | grep FFI FFI 基础使用 <? "libc.so.6"); // call C's printf() $ffi->printf("Hello %s!

    72410编辑于 2024-08-27
  • 来自专栏Rust语言学习交流

    从 RUST 库中公开 FFI

    在这篇文章中,我将讲述我对 Rust 和 FFI 的经验,基于 battery-ffi ,它将 FFI 暴露给我的另一个 crate — battery。 The Rust FFI Omnibus 和 Rust FFI Guide 都提供了如何做到这一点的多个示例。 由于 C 字符串基本上是指向以 nul 字节结尾的堆内存块的指针 (在 char* 类型的情况下),我们需要在堆上分配一些内存,并将 UTF-8 字符串6 放在那里。 后记 这应该足以让你开始为你的 crate 编写 FFI 绑定。 你可以查看以下链接获取更多信息: http://jakegoulding.com/rust-ffi-omnibus/ https://michael-f-bryan.github.io/rust-ffi-guide

    2.2K30发布于 2019-07-09
领券