使用 Golang 1.10 编译 Windows DLL 时遇到问题

2023-12-11

我在 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 and GOARCH作品。希望有人遇到过这个问题并可以帮助我。


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

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

  3. 通过测试“Test”导出来验证生成的 DLL 是否有效:rundll32.exe main.dll,Test

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 Golang 1.10 编译 Windows DLL 时遇到问题 的相关文章

随机推荐