使用Golang 1.10编译Windows DLL时出现问题

时间:2018-03-02 22:44:12

标签: windows go dll compilation

我在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"
}

我之前从未遇到此错误,并且在未指定GOOSGOARCH的情况下进行构建。希望有人遇到这个问题,可以帮助我。

1 个答案:

答案 0 :(得分:2)

  1. 确保在Ubuntu上安装了MinGW:sudo apt-get install gcc-mingw-w64-i686sudo apt-get install gcc-mingw-w64-x86-64

  2. 使用以下命令进行编译:{{1​​}}和env GOOS=windows GOARCH=386 CGO_ENABLED=1 CC=i686-w64-mingw32-gcc go build -buildmode=c-shared -o main.dll main.go

  3. 通过测试“测试”导出验证生成的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