Go语言之CGO

作者: 太阳上的雨天 分类: Go 发布时间: 2022-08-02 10:55

站在巨人的肩膀上写代码

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)
}

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注