🤖

【PHP FFI】Go から生成した共有ライブラリを使う

2024/05/05に公開

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