我正在尝试执行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-10.11.6
  • Go-1.7.3

  • 有人可以让我知道如何在MacOSX中运行上述程序吗?

    最佳答案

    golang-nuts中所述,从Go 1.5开始这是不可能的

    那不是一个cgo程序,而是一个使用gc的Go程序。
    编译器将C程序编译为结果二进制文件的相似性。

    但是从Go 1.5.0开始,该C后端被删除(最后一个版本是
    1.4.2),这样副作用就消失了。

    关于go - cgo-在MacOSX中找不到'runtime.h'文件,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/41163361/

    10-12 06:15