Go语言之CGO

367 次浏览次阅读
没有评论

站在巨人的肩膀上写代码

c/c++ 作为老大哥,积累了很多优秀的库。Go 语言提供了 CGO 工具支持 C 语言函数调用,同时也可以将 Go 语言导出 C 动态库给其他语言使用。

  • Go 语言如何导出 C 语言动态库

  • CGO 在使用 C /C++ 资源的时候一般有三种形式:直接使用源码;链接静态库;链接动态库

  • 编译和链接参数

这里只做简单的介绍,有兴趣可以深入研究~

1. 调用 C 语言库

以经典的 hello world 为例

package main

//#include <stdio.h>
import "C"

func main() {C.puts(C.CString("Hello, World\n"))
}

2. 嵌入 C 语言函数

package main

/*
#include <stdio.h>

void printint(int v) {printf("printint: %d\n", v);
}
*/
import "C"

func main() {
    v := 42
    C.printint(C.int(v))
}
package main

/*
#include <errno.h>

static int div(int a, int b) {if (b==0)
    {
        errno = EINVAL;
        return 0;
    }
    return a/b;
}
*/
import "C"
import "fmt"

func main() {v0, err0 := C.div(2, 1)
    fmt.Println(v0, err0)

    v1, err1 := C.div(2, 0)
    fmt.Println(v1, err1)
}
正文完
 0
评论(没有评论)