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.0.0 lib 现在可以为空。
添加注释

用户贡献注释 1 个注释

derrekbertrand at gmail dot com
4 年前
您可能希望添加一个 C 头文件,但就当前版本而言,预处理器指令不起作用......那么该怎么办?在使用 GCC 的系统上,通过以下命令运行该文件

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

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