2024年PHP开发者大会日本站

FFI::cdef

(PHP 7 >= 7.4.0, PHP 8)

FFI::cdef创建一个新的FFI对象

描述

public static FFI::cdef(string $code = "", ?string $lib = null): FFI

创建一个新的FFI对象。

参数

code

一个包含一系列标准C语言声明(类型、结构体、函数、变量等)的字符串。实际上,这个字符串可以从C头文件中复制粘贴。

注意:

不支持C预处理器指令,即#include#define和CPP宏不起作用。

lib

要加载并与定义链接的共享库文件的名称。

注意:

如果省略lib或为null,支持RTLD_DEFAULT的平台会尝试在正常的全局范围内查找code中声明的符号。其他系统将无法解析这些符号。

返回值

返回新创建的FFI对象。

变更日志

版本 描述
8.3.0 返回void的C函数返回PHP null,而不是FFI\CType::TYPE_VOID
8.0.0 lib现在可以为空。
添加备注

用户贡献的注释 1 条注释

0
derrekbertrand at gmail dot com
4年前
您可能需要添加一个C头文件,但是对于当前版本,预处理器指令不起作用……那么该怎么办呢?在具有GCC的系统上,通过以下命令运行该文件

cpp -P /usr/include/unprocessedheader.h -o myprettyheader.h

请注意,由于FFI不支持预处理,因此也不支持C/C++宏。除非您的库具有极其简单的公共API,否则您可能仍然需要用C编写一个小包装器。
To Top