您可能想要新增一個 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 編寫一個小型包裝器。