首页 > 文章列表 > 连接资源

连接资源

348 2024-05-24
问题内容

看起来网上有大量的网页和关于 so 的问题,但经过几个小时的搜索后我仍然无法让它工作。

我通过将 cc/cxx 设置为 x86-64 mingw-w64 来从 linux 交叉编译到 windows。编译确实有效,exe 在 windows 上运行良好。

使用 file 我得到以下输出:

PE32+ executable (GUI) x86-64 (stripped to external PDB), for MS Windows

我有两个资源文件(一个 windows *.ico 文件和一个 *.res ascii 文件,其中包含 versioninfo 等属性)。

使用mingw的windres工具将这两个资源文件转化为*.o文件。它们现在看起来像 coff 文件。这是我所能得到的。

我想要做的是将这两个资源链接到 exe 中。

我没有找到任何方法来指示 go 链接器在链接期间包含这些文件(我运行 go build,而不是 go tool)。我还尝试添加objcopy 以下各个在线页面和其他 so 问题的资源后链接...但无济于事。

我想要的只是 windows 识别这两种资源(图标和信息),以便可执行文件的行为与 windows 上的任何其他资源一样。

如果我应该指示go链接器(go工具而不是go build),那么我如何告诉它要链接哪些文件?我有“简单”的 *.go 文件,然后是 c 依赖项(glfw 和 opengl),我与 cgo 链接。

如何在 linux 命令行上完成此操作?我想将这些步骤添加到更广泛的 ci/cd(构建工作流程/资产管道)中。 windows gui 工具或类似工具不会有太大帮助。

谢谢!


正确答案


我不知道您是否使用 Fyne,但这听起来像“fyne package”的作用(嵌入图标和元数据)。

如果您在 Fyne 地区,那么您可以使用他们的工具,如果没有,也许可以查看源代码并亲眼看看它是如何完成的? https://github.com/fyne-io/fyne/blob/master/cmd/fyne/internal/commands/package-windows.go" com/fyne-io/fyne/blob/master/cmd/fyne/internal/commands/package-windows.go