我在Golang 1.10中构建Windows DLL时遇到问题,这个版本在最新版本中受支持:
“各种构建模式已移植到更多系统。具体来说,c-shared现在适用于linux / ppc64le,windows / 386和windows / amd64;” (来源:https://golang.org/doc/go1.10)
我现在有一个非常简单的程序(main.go
)只导出一个函数“Test”,但在使用以下“go build”命令时出现问题:env GOOS=windows GOARCH=386 go build -buildmode=c-shared main.go
具体而言,收到can't load package: package main: build constraints exclude all Go files in [PATH]
错误。 main.go
的源代码如下所示:
package main
import (
"C"
"fmt"
)
func main() {
fmt.Println("from main")
}
//export Test
func Test() string {
return "this is a test"
}
我之前从未遇到此错误,并且在未指定GOOS
和GOARCH
的情况下进行构建。希望有人遇到这个问题,可以帮助我。
答案 0 :(得分:2)
确保在Ubuntu上安装了MinGW:sudo apt-get install gcc-mingw-w64-i686
和sudo apt-get install gcc-mingw-w64-x86-64
使用以下命令进行编译:{{1}}和env GOOS=windows GOARCH=386 CGO_ENABLED=1 CC=i686-w64-mingw32-gcc go build -buildmode=c-shared -o main.dll main.go
通过测试“测试”导出验证生成的DLL是否有效:env GOOS=windows GOARCH=amd64 CGO_ENABLED=1 CC=x86_64-w64-mingw32-gcc go build -buildmode=c-shared -o main.dll main.go