文章大纲

用go交叉编译的32位exe文件,执行却总报不是有效的win32应用程序错误

2023-04-25 23:40:04

问题场景

在phpstorm里配置好编译Windows 32位执行程序的参数,运行go build后得到的执行程序,在32位Windows服务器上执行,却总弹出“不是有效的win32应用程序”的对话框提示。


我的配置如下图所示:



本文为翟码农个人博客蓝翟红尘下go语言开发分类下有关编译打包Windows32位执行程序的原创文章,转载请注明出处:用go编译后32位exe文件,执行却总报不是有效的win32应用程序错误 - 翟码农技术博客 (zhai14.com)

http://www.zhai14.com/blog/error-of-not-a-valid-win32-application-pop-up-after-executing-exe-compiled-with-go.html


解决方法

最后在git bash里执行命令编译打包的,得到的执行程序就ok了。


至于为何在phpstorm的Terminal命令窗口里执行就会失败,这个我就不清楚了。


编译Win32执行程序(带弹窗)

GOOS=windows GOARCH=386 go build

编译Win64执行程序(带弹窗)

GOOS=windows GOARCH=amd64 go build

编译Win32执行程序(不带弹窗)

GOOS=windows GOARCH=386 go build -ldflags "-H windowsgui"

编译Win64执行程序(不带弹窗)

GOOS=windows GOARCH=amd64 go build -ldflags "-H windowsgui"

网上一大堆是通过修改参数来编译打包的,诸如:
go env  //查看
set GOARCH=386
go env  //查看修改是否生效
go build

但不知为何,我尽管尝试了千百遍,参数仍风雨不动安如山。


我要评论
评论列表