背景
gimpのプラグインをGoで書けそうだったので、作業を
始めたら、C APIでargc,argvつまり、コマンドライン引数を渡す
必要があった。
コマンドライン引数をC APIに渡すには
コマンドラインの引数の取得にはosパッケージで行える。問題は、これをcgoで
C APIに渡すにはどうすればよいのか。
argcはC.int型。
argvが分からず調べ始めたのだが、C.char*型の配列を用意すると良い模様。
unsafeパッケージを使えば、配列の先頭アドレスとしてC API側に渡せるらしい。
import (
"os"
"unsafe"
)
argc := C.int(len(os.Args))
argv := make([]*C.char, argc)
for i, arg := range os.Args {
argv[i] = C.CString(arg)
}
C.initGimp(argc, (**C.char)(unsafe.Pointer(&argv[0])))