🤖
【PHP FFI】Go から生成した共有ライブラリを使う
go のプログラムコードを書き、go build
コマンドで共有ライブラリを生成する。C
モジュールを使っていないとヘッダーファイルは生成されないようだ。
go build -o hello.so -buildmode=c-shared hello.go
hello.go
package main
import (
"C"
"fmt"
)
//export print
func print(out *C.char) {
fmt.Println(C.GoString(out))
}
func main() {}
PHP FFI で実行する
$ffi = FFI::cdef(
'void print(char* out);',
'./hello.so'
);
$ffi->print("Hello World");
Discussion