PHP Conference Japan 2024

FFI::cdef

(PHP 7 >= 7.4.0, PHP 8)

FFI::cdef建立新的 FFI 物件

說明

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

建立一個新的 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 現在可以為 null。
新增註釋

使用者貢獻的註釋 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