我在 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
的情况下构建也能正常工作。希望有人遇到过这个问题并能帮助我。
最佳答案
确保您在 Ubuntu 上安装了 MinGW:
sudo apt-get install gcc-mingw-w64-i686
和sudo apt-get install gcc-mingw-w64-x86 -64
使用以下命令编译:
GOOS=windows GOARCH=386 CGO_ENABLED=1 CC=i686-w64-mingw32-gcc go build -buildmode=c-shared -o main.dll main.go
和GOOS=windows GOARCH=amd64 CGO_ENABLED=1 CC=x86_64-w64-mingw32-gcc go build -buildmode=c-shared -o main.dll main.go
通过测试“测试”导出来验证生成的 DLL 是否正常工作:
rundll32.exe main.dll,Test
关于windows - 使用 Golang 1.10 编译 Windows DLL 时遇到问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49078510/