如何将已编译的资源(.res)文件链接到可执行文件中

时间:2015-01-18 18:52:15

标签: windows visual-studio winapi portable-executable resource-files

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

我有一个二进制资源(.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环境之外使用。我不知道它是如何运作的。

1 个答案:

答案 0 :(得分:2)

您可以使用UpdateResource function

以编程方式更新资源

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

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