在上面的注释中编写一些 C 代码import "C"很简单:// foo.gopackage 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())}它工作正常:$ go install$ fooforty-two == 42但是,它自己的 .c 文件中的 C 代码:// foo.cint fortythree() { return 43;}...引用自 Go:// foo.gofunc main() { fmt.Printf("forty-two == %d\n", C.fortytwo()) fmt.Printf("forty-three == %d\n", C.fortythree())}...不起作用:$ go install# foocould not determine kind of name for C.fortythree
1 回答
繁星coding
TA贡献1797条经验 获得超4个赞
缺少 C 头文件 foo.h:
// foo.h
int fortythree();
像这样从 Go 引用头文件:
// 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())
}
看, foo.h 的力量:
$ go install
$ foo
forty-two == 42
forty-three == 43
- 1 回答
- 0 关注
- 292 浏览
添加回答
举报
0/150
提交
取消