首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 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 ); // $demo_t得到一个object/* object(FFI\CData:struct demo_t)#3 (2) { ["mynum"]=> int(0) ["str"] ($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 的方式不尽相同。 没有大家一致认可的调用约定[2],那也是不可能互通的。于是,ABI(应用程序二进制接口) 就出现了。调用约定,类型表示和名称修饰这三者的统称,即是众所周知的应用二进制接口(ABI)。 所以,虽然都能做 FFI,但是不同语言实现 FFI 的困难程度是不同的。 哪些语言可以方便地对外提供 FFI 库支持 可惜,大部分语言只能单向地“索取”。 --- [1]: https://en.wikipedia.org/wiki/Foreign_function_interface#cite_note-1 [2]: https://zh.wikipedia.org

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

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

    Rust 语言对 FFI 有比较完善的支持。本节主要讲在基础设施层面,Rust 语言对 FFI 的支持。 ("abs(-1) is {}", abs_in_rust(-1)); } } 2. 标准库 在实际开发 Rust 语言与其它语言相互调用的程序时,会遇到需要相互传递参数的情况。 2.1 std::os::raw 模块 使用 FFI 进行交互的代码通常会使用到 C 语言提供的基本类型,标准库 std::os::raw 模块[2]提供了一些类型与 C 语言定义的类型相匹配,以便与 类型 解释 更多类型可以查见参考链接[2]。 /reference/items/external-blocks.html [2] 标准库 std::os::raw 模块,https://doc.rust-lang.org/stable/std/os

    3.6K10发布于 2020-04-20
  • 来自专栏祝威廉

    Rust FFI 实践

    这里就会涉及到Rust FFI的使用,目前网络上资源也比较少,更多的是Example性质的,大家的文章大同小异,所以我这里就简单写下我这两天折腾的心得。代码还比较烂,欢迎大家指正,但勿喷。 在FFI里,我们可以使用一个空的struct 对象来代替一个实际的Rust对象,然后通过指针来进行应用。什么意思的呢? = {xTensor, yTensor}; CTensor **xy_p; xy_p = xy; CTensorArray *tarray = create_tensor_array(xy_p, 2) pre = load(path); OutputTensor *wow = predict(pre, "y_hat", "x,y", tarray); OutputTensor *wow2

    1.3K20发布于 2019-05-06
  • 来自专栏小孟开发笔记

    PHP安装ssh2拓展

    linux系统 注意: 1.安装前需要openssl 可以用which openssl看是否已安装 2.安装ssh2要先安装libssh2 安装开始 1.下载包 wget http://www.libssh2 .org/download/libssh2-1.4.2.tar.gz$ wget http://pecl.php.net/get/ssh2-0.12.tgz 2.安装libssh2 *解压 tar /configure –prefix=/usr/local/libssh2 *编译 安装 make make install *安装完返回上级目录 cd .. 3.安装ssh2 *解压ssh2 /configure –prefix=/usr/local/ssh2 –with-ssh2=/usr/local/libssh2 –with-php-config=/www/server/php/56/ so 重启PHP 保险起见,Nginx也重启 然后大功告成 未经允许不得转载:肥猫博客 » PHP安装ssh2拓展

    1.8K20编辑于 2023-02-23
  • 来自专栏Rust语言学习交流

    allwefantasy:Rust FFI 实践

    这里就会涉及到Rust FFI的使用,目前网络上资源也比较少,更多的是Example性质的,大家的文章大同小异,所以我这里就简单写下我这两天折腾的心得。代码还比较烂,欢迎大家指正,但勿喷。 在FFI里,我们可以使用一个空的struct 对象来代替一个实际的Rust对象,然后通过指针来进行应用。什么意思的呢? = {xTensor, yTensor}; CTensor **xy_p; xy_p = xy; CTensorArray *tarray = create_tensor_array(xy_p, 2) pre = load(path); OutputTensor *wow = predict(pre, "y_hat", "x,y", tarray); OutputTensor *wow2

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

    Flutter ffi实践录

    实践了一下 Flutter 通过 ffi 包调用 native C/C++ 代码,ffi 代表 Foreign function interface (外部函数接口),入门实践 可以在 Flutter 我们先看一个简单的示例,2个int类型相加: 这里最后会把 lookup 的结果转换成一个 Function,通过 Function的执行,来调用C里面的逻辑得到最终结果。 我们进 ffi 的源码可以看到: 原来 ffi 里面定义了 NativeType 来表示 C/C++ native 层的类型。看一下它的继承结构: 这里提供的全部都是基础类型。 T extends NativeType>(); 回到 Logan 的调用我们就会发现,int类型参数好指定 ,String 类型则不是很好指定了,如果我们直接传 uin8的point类型,需要解决2个问题 相比于 Android有封装好的 JNI, ffi 相对来说还是比较麻烦的。需要自己提供内存分配和类型转换的实现。 总结 到这里 ffi 的实践就介绍完了。

    2.4K20编辑于 2022-05-10
  • 来自专栏老九学堂

    拓展】O2O大解析

    都开始搞O2O这一块儿,直接使得O2O这个词红得发紫了。 ? 然而相信很多人知道O2O很流行很“高大上”,但是它到底是个什么,却不了解,关于O2O,百度百科是这这样说的: O2O即Online To Offline(在线离线/线上到线下),是指将线下的商务机会与互联网结合 O2O的概念非常广泛,只要产业链中既可涉及到线上,又可涉及到线下,就可通称为O2O。主流商业管理课程如MBA、CEO必读12篇及EMBA等均对O2O这种新型的商业模式有所介绍及关注。 2013年O2O进入高速发展阶段,开始了本地化及移动设备的整合,于是O2P商业模式横空出世,成为O2O模式的本地化分支。 ? 看完这些,你可能还是不懂,那么老九君在给各位细分为以下4点: 1. (2)服务标准c端。 O2O相对于C2B,两者的差异在于O2O的标准在C端,C2B的标准是在B端。

    1.4K40发布于 2018-03-01
  • 来自专栏喵了个咪的博客空间

    基于PhalApi2的Redis拓展

    基于PhalApi2的Redis拓展 前言 Redis在PHP开发中运用场景已经无处不在,小到简单缓存大到数据库或消息队列都可以使用Redis来进行实现,基于PhalApi2的出世,PhalApi2-Redis 也紧接着进行了本次适配来提供更好的开发体验,PhalApi2-Redis提供相对于原生PhalApi2-RedisCache缓存更强大的Redis操作以及完善的封装机制,帮助开发者更好的使用Redis低成本的来解决实际的业务问题 附上: 官网地址:http://www.phalapi.net/ 项目Git地址:https://github.com/wenzhenxi/phalapi2-redis 项目码云地址 : https: //gitee.com/wenzhenxi/phalapi2-redis 安装配置Redis 基于Liunx强烈推荐使用oneinstack在配置php 和 Redis同事会将依赖打包好: oneinstack => 3, ), //使用阻塞式读取队列时的等待时间单位/秒 'blocking' => 5, ), 入门使用 初始化PhalApi2-

    99050发布于 2018-03-02
  • 来自专栏各类技术文章~

    Dart FFI使用 示例

    是什么 Dart FFI(官方地址)是可以在Dart Native平台上运行的Dart移动、命令行和服务器应用上通过Dart FFI来调用C代码的一个技术。 创建pubspec.yaml文件 2). 创建bin/main.dart文件 3). 创建C环境,创建library、library/build文件夹 4). build |_ CMakeLists.txt |_ sample.c |_ sample.h |_ sample.def |_ pubspec.yaml 复制代码 2. pubspec.yaml引入FFI 在pubspec.yaml文件中的dependencies中加入ffi、path库 pubspec.yaml name: ffi_sample version: 0.0.1 命令行进入到library/build文件夹下 2). 执行cmake ..生成编译所需文件 3).

    2.5K40编辑于 2021-12-31
  • 来自专栏Rust语言学习交流

    Rust FFI 编程 - libc crate

    libc 是什么 libc 是对各平台的系统库的原始 FFI 绑定。其代码地址在:https://github.com/rust-lang/libc。可以看到,这是 Rust 官方维护的一个库。 随便举几个例子:dup2 标准库有吗?openpty 标准库有吗?ioctl 标准库有吗? ioctl 没有,那就是跟底层 say byebye 啦(进而跟严肃的嵌入式开发绝缘)。

    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
  • 来自专栏Rust语言学习交流

    Rust FFI 编程 - nix crate

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

    2K20发布于 2020-05-14
  • 来自专栏天乐博客

    Linux中给php安装ssh2拓展

    相信许多人需要安装ssh2拓展,网上的诸多教程要不已经过时,要不过程模糊或者繁杂,今天我来分享一个详细简单的安装教程。 1.使用yum 安装 libssh。 yum install libssh2-devel 2.下载 ssh2,解压并编译安装(可自行去官网选择对应版本). #下载ssh2-1.2.tgz wget http://pecl.php.net/get/ssh2-1.2.tgz #解压 tar -xvf ssh2-1.2.tgz cd ssh2-1.2/ #开始编译 so 4.查看[phpinfo]是否扩展安装成功或在控制台输入下方命令,成功后返回[ssh2],失败返回空白,如果报错查看编译路径是否正确。 php -m | grep ssh2 好了,到这教程就结束了。 本文链接:https://blog.361s.cn/64.html 天乐原创文章,转载请注明出处!

    1.2K21编辑于 2023-11-16
  • 来自专栏开源技术小栈

    PHP如何编译启用 FFI 扩展

    FFI PHP Foreign Function Interface (FFI) 是 PHP 7.4 引入的一个新特性,它允许 PHP 代码调用 C 语言的库函数,而无需编写额外的扩展。 现在,使用 FFI,你可以直接调用这些库,而无需编写和维护扩展。 两种启用方式 编译安装PHP的时候开启FFI扩展--with-ffi 已经安装PHP,通过扩展来编译安装FFI扩展 编译开启FFI . /configure --prefix=/usr/local/php-8.3.1 --with-ffi 编译扩展开启FFI 下载 wget https://www.php.net/distributions 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 基础使用 <?

    72410编辑于 2024-08-27
  • App Inventor 2 MQTT拓展入门(保姆级教程)

    准备工作APPINVENTOR测试平台:AppInventor2中文网(https://www.fun123.cn)MQTT拓展下载:MQTT中文文档页面进行下载。 App一样的连接参数:往指定主题发布一个测试消息,效果如下:App设计及代码服务器地址:bemfa.com端口:9501客户端ID:(MQTT云控制台获取)订阅主题:APPMQTT新建项目,导入MQTT拓展 ,可在“界面设计”的拓展属性中进行服务器通信基本设置:也可以在“程序设计”视图中,屏幕初始化时使用代码块进行设置:完整代码如下:测试效果App端测试发布消息,效果如下:App与测试客户端联动测试,效果如下 (2)订阅两个主题,一个专门用于接收,一个专门用于发布。

    1K11编辑于 2024-08-06
  • 来自专栏Rust语言学习交流

    从 RUST 库中公开 FFI

    在这篇文章中,我将讲述我对 Rust 和 FFI 的经验,基于 battery-ffi ,它将 FFI 暴露给我的另一个 crate — battery。 首先要做的事 你需要将 libc 添加到 crate 的 dependencies 中,并将 crate-type 设置为cdylib2,这样将会构建出动态库 (.so, .dylib 或 .dll 文件 The Rust FFI Omnibus 和 Rust FFI Guide 都提供了如何做到这一点的多个示例。 后记 这应该足以让你开始为你的 crate 编写 FFI 绑定。 你可以查看以下链接获取更多信息: http://jakegoulding.com/rust-ffi-omnibus/ https://michael-f-bryan.github.io/rust-ffi-guide

    2.2K30发布于 2019-07-09
  • 来自专栏Rust语言学习交流

    在 WSL 中学习 Rust ffi

    博主最近从新学习 Rust FFI 的使用,但是手头上没有可用的 Linux 环境(Windows 编译c太麻烦了),于是就尝试着使用 WSL来搭建 Rust 环境和简易的 c 编译环境,并记录下中间遇到的一些坑 cargo 详细使用教程 甚至不会讲 Rust FFI 是什么 WSL Rust 环境搭建 由于 WSL 是新装的,没有 Rust 和 gcc/g++ 环境,因此需要安装: sudo apt install 首先,创建一个 binary 项目: cargo new --bin ffi_learn 项目目录结构如下: cpp_src |-- sorting.h |-- sorting.cpp \n", my_arr); } 然后执行调用: $ cargo run Compiling ffi_learning v0.1.0 (/mnt/c/Users/huangjj27/Documents /codes/ffi_learning) warning: `extern` block uses type `[i32]`, which is not FFI-safe --> src/main.rs

    1.4K21发布于 2020-05-14
  • 来自专栏Rust语言学习交流

    Rust FFI 编程 - bindgen 使用示例

    当我们拥有一组具有良好声明的头文件时,自己定义 C 库的 Rust FFI 绑定函数是毫无意义的。我们可以使用 bindgen 这种工具从 C 库的头文件生成 Rust FFI 绑定函数。 上一篇我们介绍了使用 bindgen 为 C 库创建 Rust FFI 绑定有两种方式:使用 bindgen 命令行和使用 build.rs。本文我们使用build.rs这种方式作为示例进行说明。 设置 crate 项目 一般 Rust FFI 绑定的 crate 项目会包含构建和导出 C 库的 unsafe 函数, crate 的 Rust 标准命名约定为lib<XXXX>-sys,我们本次示例 ,针对 C 实现的secp256k1库生成 Rust FFI 绑定。 2. 生成绑定 现在直接运行cargo build,将立即生成与secp256k1的 Rust FFI 绑定。

    2.4K100发布于 2020-09-30
  • 来自专栏FunTester

    通用池化框架commons-pool2功能拓展

    最近真真实实用到了通用池化框架commons-pool2,又学到了一些新的功能。也让自己对这个框架有了新的认识。 下面分享一下我在使用过程中用到的功能拓展。 这里使用经验是基于org.apache.commons.pool2.impl.GenericKeyedObjectPool,部分拓展功能已经在org.apache.commons.pool2.impl.GenericObjectPool 销毁对象的方法底层是调用的org.apache.commons.pool2.impl.GenericKeyedObjectPool#destroy,框架提供了两个清理的API: org.apache.commons.pool2 第三种 这种算是拓展了,后续有针对不同的key进行优先级划分,高优的KeyedPool允许2个空闲的对象来保障并发能力,对于非高优的KeyedPool允许超过最大空闲时间之后,空闲对象为零,腾出更多资源给高优的

    88220编辑于 2023-02-14
领券