LoginSignup
3
2

More than 5 years have passed since last update.

cgoでコマンドライン引数を渡すには

Last updated at Posted at 2015-05-29

背景

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])))

関連記事

3
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
2