将 cgo 与 go 模块一起使用

Using cgo with go modules

我正在尝试创建一个 go 程序,我需要使用 freetype,但是 go 中的 freetype 模块似乎与 c 的原始 freetype 库确实不同。克服这个问题我在 C 中创建了一个简单的库,我正在尝试使用 cgo 从 Go 调用该库中的函数。但我似乎无法弄清楚我的 .a 文件应该位于何处才能找到它。我正在使用 go 模块,但我的项目不在 GOPATH 中。

所以我的问题是我需要将 C 库的 .h 和 .a 文件放在哪里?

如果我没猜错的话。这是一个问题,您不知道如何告诉 cgo 工具链在哪里可以找到 .h 和 .a 文件。网上有很多例子,这里提供我的。

code_example

package democgo

/*
#cgo CFLAGS: -I ${directory_of_your_dot_H}
#cgo LDFLAGS: -L ${directory_of_your_dot_A} -l${your_dot_A_name} -lstdc++
#include "code_from_c.h"
#include <stdlib.h>
*/
import "C"

// Hello is.
func Hello() {
    fmt.Println("this is CGO at package democgo")
    fmt.Println(
        C.GoString(
            C.HelloWorld(),
        ),
    )
}