import - How to use external .c files with CGO? -
to write c code in comment above import "c"
straightforward:
// foo.go package main /* int fortytwo() { return 42; } */ import "c" import "fmt" func main() { fmt.printf("forty-two == %d\n", c.fortytwo()) fmt.printf("forty-three == %d\n", c.fortythree()) }
and works fine:
$ go install $ foo forty-two == 42
however, c code in it's own .c file:
// foo.c int fortythree() { return 43; }
...referenced go:
// foo.go func main() { fmt.printf("forty-two == %d\n", c.fortytwo()) fmt.printf("forty-three == %d\n", c.fortythree()) }
...does not work:
$ go install # foo not determine kind of name c.fortythree
the c header file foo.h missing:
// foo.h int fortythree();
reference header file go this:
// foo.go package main /* #include "foo.h" int fortytwo() { return 42; } */ import "c" import "fmt" func main() { fmt.printf("forty-two == %d\n", c.fortytwo()) fmt.printf("forty-three == %d\n", c.fortythree()) }
behold, power of foo.h:
$ go install $ foo forty-two == 42 forty-three == 43
Comments
Post a Comment