我正在尝试使用 SWIG 将这个库(https://github.com/lemire/EWAHBoolArray)包装在 Go 中,但自从升级到 1.4 以来我遇到了很多问题
我已经使用 Go 1.3.3 并按照 SWIG 网站上的 SWIG + Go 说明成功地让一切正常工作。我必须手动编译和安装包,而不是使用 go build,但一切都工作正常。
现在,当我尝试使用 Go 1.4.2 运行相同的程序时,我收到此错误:
ewah_usage.go:5:2: C source files not allowed when not using cgo: goewah_gc.c
我使用最新的 SWIG 和最新的 Go 重建了软件包,它似乎已经正确安装。但是每当我使用该库运行程序时,我都会收到上述错误。
我的测试程序(goewah 是我用 SWIG 构建的库)
package main
import (
"fmt"
"bitbucket.org/evanh/goewah"
)
func main() {
x := goewah.NewEWAHBoolArray()
x.Set(1)
x.Set(2)
fmt.Println(x.Get(1))
}
这是一个错误。对不起。添加一个文件,上面写着
package p
import "C"
你应该绕过它。
虽然将 CGO_ENABLED=0 添加到像
go test
这样的命令可以工作,只需添加到 C/C++ 源文件的顶部,例如:
//go:build ignore
链接:
- https://pkg.go.dev/cmd/go#hdr-Build_constraints
- https://zhuanlan.zhihu.com/p/566878192
- https://github.com/fritx/mixed-playground/blob/main/strings/2129.%20%E5%B0%86%E6%A0%87%E9%A2%98%E9%A6%96 %E5%AD%97%E6%AF%8D%E5%A4%A7%E5%86%99.cc