我在Golang 1.10中构建Windows DLL时遇到问题,此最新版本支持此功能:
我现在有一个非常简单的程序(
具体来说,接收到
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | package main import ( "C" "fmt" ) func main() { fmt.Println("from main") } //export Test func Test() string { return"this is a test" } |
在未指定
- 是否启用了cgo? 您安装了C编译器吗?
-
对我在Golang的愚昧致歉。 我添加了
CGO_ENABLED=1 选项,该选项应启用CGO。 新命令是env GOOS=windows GOARCH=386 CGO_ENABLED=1 go build -buildmode=c-shared main.go ,但是现在我正在接收gcc_libinit_windows.c:7:10: fatal error: windows.h file not found 。 我在OSX上编译(如果有帮助)。 - 如果您在osx上进行编译,是否为Windows安装了完整的C编译器工具链?
-
理想情况下,我希望将此代码在应该已安装gcc的Ubuntu系统上进行编译。 尝试在Ubuntu上进行构建会出现以下错误:
gcc: error: unrecognized command line option ‘-mthreads’; did you mean ‘-pthread’? 到目前为止,感谢您的帮助! - 安装gcc并不意味着您可以针对Windows进行编译。 您需要Windows编译器和所有必需的标头。 Windows的IIRC支持的编译器是mingw。
-
JimB,你是男人! 最终的结果是:1.在Ubuntu:
sudo apt-get install gcc-mingw-w64-i686 和sudo apt-get install gcc-mingw-w64-x86-64 上安装mingw 2.在Ubuntu:env GOOS=windows GOARCH=386 CGO_ENABLED=1 CC=i686-w64-mingw32-gcc go build -buildmode=c-shared -o main.dll main.go 和env GOOS=windows GOARCH=amd64 CGO_ENABLED=1 CC=x86_64-w64-mingw32-gcc go build -buildmode=c-shared -o main.dll main.go 上为Windows编译。3.验证rundll32.exe main.dll,Test 是否可以正常使用。再次感谢!
确保在Ubuntu上安装了MinGW:
使用以下命令进行编译:
通过测试"测试"导出来验证生成的DLL是否有效:
-
我想知道为什么您将所有这些
env 都散布了起来; 没有它们,应该可以正常工作。