问题
I'm having issues building a Windows DLL in Golang 1.10, which is supported in this latest version:
"The various build modes have been ported to more systems. Specifically, c-shared now works on linux/ppc64le, windows/386, and windows/amd64;" (Source: https://golang.org/doc/go1.10)
I have a very simple program right now (main.go
) that only exports one function "Test", but am having issues when using the following "go build" command: env GOOS=windows GOARCH=386 go build -buildmode=c-shared main.go
Specifically, receiving the can't load package: package main: build constraints exclude all Go files in [PATH]
error. The source code for main.go
is shown below:
package main
import (
"C"
"fmt"
)
func main() {
fmt.Println("from main")
}
//export Test
func Test() string {
return "this is a test"
}
I've never encountered this error before and building without specifying GOOS
and GOARCH
works. Hoping someone has encountered this issue and can help me out.
回答1:
Make sure you have MinGW installed on Ubuntu:
sudo apt-get install gcc-mingw-w64-i686
andsudo apt-get install gcc-mingw-w64-x86-64
Compile using the following commands:
env GOOS=windows GOARCH=386 CGO_ENABLED=1 CC=i686-w64-mingw32-gcc go build -buildmode=c-shared -o main.dll main.go
andenv GOOS=windows GOARCH=amd64 CGO_ENABLED=1 CC=x86_64-w64-mingw32-gcc go build -buildmode=c-shared -o main.dll main.go
Verify generated DLL works by testing the "Test" export:
rundll32.exe main.dll,Test
来源:https://stackoverflow.com/questions/49078510/trouble-compiling-windows-dll-using-golang-1-10