站点图标 星露谷值班站长

fyne windows编译问题

Fyne 是一个用 Go 编写的易于使用的 UI 工具包和应用程序 API。它旨在构建在具有单一代码库的桌面和移动设备上运行的应用程序。

demo 演示

package main

import (
	"fyne.io/fyne/v2/app"
	"fyne.io/fyne/v2/container"
	"fyne.io/fyne/v2/widget"
)

func main() {a := app.New()
	w := a.NewWindow("Hello")

	hello := widget.NewLabel("Hello Fyne!")
	w.SetContent(container.NewVBox(
		hello,
		widget.NewButton("Hi!", func() {hello.SetText("Welcome :)")
		}),
	))

	w.ShowAndRun()}

运行

go run main.go

windows 情况下可能会遇到如下报错

command-line-arguments
C:\Program Files\Go\pkg\tool\windows_amd64\link.exe: running gcc failed: exit status 1
/usr/lib/gcc/x86_64-pc-cygwin/7.4.0/../../../../x86_64-pc-cygwin/bin/ld: cannot find -lmingwex
/usr/lib/gcc/x86_64-pc-cygwin/7.4.0/../../../../x86_64-pc-cygwin/bin/ld: cannot find -lmingw32
collect2: error: ld returned 1 exit status

出现这种错误是因为安装的 gcc 版本是 windows 的 gcc 导致的,解决方法也很简单,取消设置的 cygwin bin 环境变量,使现有的程序不再使用 cygwin 安装的 gcc 版本。

安装新的 tdm-gcc

https://jmeubank.github.io/tdm-gcc/download/

再次运行,报错如下

mod\github.com\go-gl\glfw\v3.3\glfw@v0.0.0-20211024062804-40e447a793be/glfw/src/input.c:501: undefined reference to __assert_func' C:/TDM-GCC-64/bin/../lib/gcc/x86_64-w64-mingw32/10.3.0/../../../../x86_64-w64-mingw32/bin/ld.exe: C:\Users\15006\AppData\Local\Temp\go-link-613747495\000002.o:C:\Users\15006\go\pkg\ mod\github.com\go-gl\glfw\v3.3\glfw@v0.0.0-20211024062804-40e447a793be/glfw/src/input.c:632: more undefined references to__assert_func’ follow

解决办法:

删除 C:\Users\ 用户名 \AppData\Local\go-build

再次 build 就成功了~

退出移动版