您可能想要新增一個 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 現在可以為 null。 |
您可能想要新增一個 C 標頭檔,但由於目前版本不支援預處理器指令... 所以該怎麼辦?在具有 GCC 的系統上,使用以下命令運行檔案
cpp -P /usr/include/unprocessedheader.h -o myprettyheader.h
請注意,由於 FFI 不支援預處理,因此也不支援 C/C++ 巨集。除非您的程式庫具有非常簡單的公共 API,否則您可能仍然需要用 C 編寫一個小型包裝器。