PHP 8.0.0 Released!


(PHP 7 >= 7.4.0)

FFI::cdefCreates a new FFI object


public static FFI::cdef ([ string $code = "" [, string $lib ]] ) : FFI

Creates a new FFI object.



A string containing a sequence of declarations in regular C language (types, structures, functions, variables, etc). Actually, this string may be copy-pasted from C header files.


C preprocessor directives are not supported, i.e. #include, #define and CPP macros do not work.


The name of a shared library file, to be loaded and linked with the definitions.


If lib is omitted, platforms supporting RTLD_DEFAULT attempt to lookup symbols declared in code in the normal global scope. Other systems will fail to resolve these symbols.

Return Values

Returns the freshly created FFI object.

add a note add a note

User Contributed Notes 1 note

derrekbertrand at gmail dot com
9 months ago
You'll probably want to add a C header file, but as of the current version preprocessor directives do not work... so what do? On systems with GCC run the file through this command:

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

Note that because preprocessing is not suppored in FFI, C/C++ macros are not supported either. You'll probably still have to write a small wrapper in C unless your library has an exceedingly simple public API.
To Top