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就成功了~