您可能需要添加一个C头文件,但是对于当前版本,预处理器指令不起作用……那么该怎么办呢?在具有GCC的系统上,通过以下命令运行该文件
cpp -P /usr/include/unprocessedheader.h -o myprettyheader.h
请注意,由于FFI不支持预处理,因此也不支持C/C++宏。除非您的库具有极其简单的公共API,否则您可能仍然需要用C编写一个小包装器。
(PHP 7 >= 7.4.0, PHP 8)
FFI::cdef — 创建一个新的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 现在可以为空。 |
您可能需要添加一个C头文件,但是对于当前版本,预处理器指令不起作用……那么该怎么办呢?在具有GCC的系统上,通过以下命令运行该文件
cpp -P /usr/include/unprocessedheader.h -o myprettyheader.h
请注意,由于FFI不支持预处理,因此也不支持C/C++宏。除非您的库具有极其简单的公共API,否则您可能仍然需要用C编写一个小包装器。