您可能希望添加一个 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.0.0 |
lib 现在可以为空。 |
您可能希望添加一个 C 头文件,但就当前版本而言,预处理器指令不起作用......那么该怎么办?在使用 GCC 的系统上,通过以下命令运行该文件
cpp -P /usr/include/unprocessedheader.h -o myprettyheader.h
请注意,由于 FFI 中不支持预处理,因此也不支持 C/C++ 宏。除非您的库具有非常简单的公共 API,否则您可能仍然需要用 C 编写一个小的包装器。