如何 link 将已编译的资源 (.res) 文件转换为可执行文件

How to link a compiled resource (.res) file into an executable

我想做的是以编程方式更新可执行文件的资源。

我有一个包含位图、图标、版本信息和清单的二进制资源 (.res) 文件,是用 resource editor 创建的,还有一个用 AutoHotkey 编译的 PE 文件,我想将资源复制到该文件中来自 .res 文件。

直到现在,我曾经在命令提示符下使用 ResourceHacker 执行此操作,但 ResourceHacker 无法重新分发,而且我想更优雅地执行此操作。

所以我在查看 WinAPI 函数,似乎有一种方法可以做到这一点:http://msdn.microsoft.com/en-us/library/windows/desktop/ms648008%28v=vs.85%29.aspx
但问题是文章描述了如何将资源从一个可执行文件复制到另一个文件,并且不能使用 LoadLibrary/LoadLibraryEx.

导入非可执行文件(.res 文件)

似乎还有一种方法可以使用 Visual Studio 中的工具来执行此操作,尤其是 LINK.exe。但我不确定它是否可以在 VS 环境之外使用。我不知道它是如何工作的。

您可以使用 UpdateResource function

以编程方式更新资源

不涉及RES文件。项目 makefile 系统使用 RES 文件来实现资源的最小重建......每次重新链接应用程序时都不必重新编译它们,只需嵌入即可。但是您不会重新链接应用程序并丢失现有资源,因此只更新您想要更改的资源是可行的方法。

如果您的源资产已经在 RES 文件中编码,那么 this page describing "Resource File Formats" 可以帮助您提取它们。它还描述了使用 LINK.exe 进行资源嵌入。 LINK.exe 作为 Visual Studio 的一部分安装,但在许多版本的 Platform SDK 和 Windows DDK 中也可用。