使用 webview/webview_go 在 Golang 程序上添加图标

问题描述 投票:0回答:1

我一直在尝试向 go build 生成的可执行文件添加图标。在内部,此可执行文件使用 webview/webview_go

我使用

windres
从以下
.syso
文件生成
.rc
文件

#include <windows.h>
100 ICON "favicon.ico"

(用于生成的命令:

 C:\mingw64\bin\windres.exe -i .\windress-res\app.rc -O coff -o cmd/app.syso

之后,我构建可执行文件

$env:CC = "C:\mingw64\bin\gcc.exe"; 
$env:CXX = "C:\mingw64\bin\g++.exe"; 
go build --ldflags "-linkmode=external -H=windowsgui -s -w"  cmd/app.go

生成的可执行文件没有图标。

然后,我读到我必须向

--ldflags
添加一个标志:
-linkmode external
,但这会产生多个与
github.com/webview/webview_go(.text): relocation target webview_dispatch not defined
类似的错误。

根据我的理解,我无法使用内部 go 链接器,因为构建的 exe 使用 CGO。

如何将图标嵌入到可执行文件中?我一直在努力寻找有效的答案。

我愿意接受任何可以在我的文件中获得图标的解决方案,只要它是可编写脚本的。

go embedded-resource cgo webview2
1个回答
0
投票

啊啊,在 stackoverflow 上问问题很棒,因为我通常会在不久之后自己找到答案。这次也不例外。

通过使用 go 链接器的

-extldflags
标志,我能够使用 g++ 链接器添加图标。

这给出了以下命令(在

--ldflags
中,它从构建命令传递 go 链接器标志)。 (请注意
--ldflags
参数对单引号的更改,因为我们需要在内部使用双引号。)

$env:CC = "C:\mingw64\bin\gcc.exe"; 
$env:CXX = "C:\mingw64\bin\g++.exe"; 
go build --ldflags '-linkmode=external -H=windowsgui -s -w -extldflags "cmd/app.syso"' cmd/app.go
© www.soinside.com 2019 - 2024. All rights reserved.