Slide 9
Slide 9 text
© DMM
2. Go側からCの定義済み関数を呼び出す
(例)
9
- 使い方
1. Go側でCの関数を定義して呼び出す
2. Go側からCの定義済み関数を呼び出す
3. C側から定義済みGo関数を呼び出す
package main
/*
// CFLAGS: Cコンパイラへのオプション
// (例: インクルードパス指定 )
// #cgo CFLAGS: -I/opt/local/include
// LDFLAGS: リンカへのオプション
// (例: ライブラリパス、リンクするライブラリ名指定 )
// #cgo LDFLAGS: -L/opt/local/lib -lcustommath
// 標準のmath.hを使用。多くの Unix系システムでは libmのリンクが必要。
#cgo LDFLAGS: -lm
#include // C 標準数学ライブラリ
*/
import "C" // cgoを有効化
import "fmt"
func main() {
inputValue := 49.0
fmt.Printf("Go: Calculating square root of
%.2f using C's math library. \n", inputValue )
// Goのfloat64をCのdoubleに変換してC関数を呼び出す
cInput := C.double(inputValue )
cResult := C.sqrt(cInput)
fmt.Printf("Go: Result from C's sqrt( %.2f) =
%.2f\n", cInput, cResult)
}
コンパイルオプションの指定
CFLAGS, CPPFLAGS, CXXFLAGS, FFLAGS and LDFLAGSがある[6]
[6] https://pkg.go.dev/cmd/cgo#hdr-Using_cgo_with_the_go_command