我正在尝试按照here
执行cgo程序 package main
/*
#include "runtime.h"
int goId() {
return g->goid;
}
*/
import "C"
import "fmt"
func main() {
x := C.goId()
fmt.Printf("Id - %d", x)
}
在运行上述程序时,我收到以下错误: -
jab-MacBook-Pro-4:src debraj$ go build gid.go
# command-line-arguments
./gid.go:4:10: fatal error: 'runtime.h' file not found
#include "runtime.h"
^
1 error generated.
如果我将标题更改为如下所示: -
#include <objc/runtime.h>
然后它给我以下错误: -
jab-MacBook-Pro-4:src debraj$ go build gid.go
# command-line-arguments
./gid.go:7:9: error: use of undeclared identifier 'g'
return g->goid;
^
1 error generated.
环境
有人可以告诉我如何在MacOSX中运行上述程序吗?
答案 0 :(得分:0)
正如golang-nuts中所讨论的那样,从Go 1.5开始这是不可能的
那不是一个cgo程序,而是一个使用gc的Go程序 编译器将C程序编译成生成的二进制文件的亲和力。
但是从Go 1.5.0开始,该C后端被删除(最后一个版本是 1.4.2),使副作用消失。