FFI::cdef

(PHP 7 >= 7.4.0, PHP 8)

FFI::cdefСоздаёт новый объект FFI

Описание

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

Создаёт новый объект FFI.

Список параметров

code

Строка, содержащая последовательность деклараций на языке С (типы, структуры, функции, переменные и т.д.). Фактически можно скопировать кусок заголовочного файла С.

Замечание:

Директивы сопроцессора С не поддерживаются. Т.е. #include, #define и макросы CPP работать не будут.

lib

Имя файла библиотеки, который будет загружен и связан с заданными декларациями.

Замечание:

Если параметр lib не задан или null, то для платформ, поддерживающих RTLD_DEFAULT, будет произведён поиск задекларированных в code сущностей в глобальной области видимости. Для прочих платформ произвести привязку не получится.

Возвращаемые значения

Возвращает новый объект FFI.

Список изменений

Версия Описание
8.0.0 lib теперь допускает значение null.
add a note add a note

User Contributed Notes 1 note

up
3
derrekbertrand at gmail dot com
4 years 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