問題
cgoを使ってGoのコードからC/C++のライブラリを使いたいので、手始めにHello, World書いて実行したけど、以下のエラーが出る。
% go run main.go # command-line-arguments could not determine kind of name for C.foo
可能性1) そこ、空行いれちゃだめ
cat main.go
package main /* #include <stdio.h> void foo(char* s) { printf("foo received: %s\n", s); } */ import "C" func main() { message := C.CString("Hello, cgo!!") C.foo(message) }
import "C"
のうえに改行いらない
*/ - - import "C" + import "C"
可能性2) C Compilerが古いのでは
デフォルトで使われてるC Compilerを確認
% go env | grep CC
% which gcc % ls -l /usr/bin | grep gcc % ls -l /usr/local/bin | grep gcc % env CC=/usr/local/bin/gcc-4.9 go run main.go
として、CCを明示する
このずかちゃんの表情
DRY