将资源文件添加到 VC6 dll
Posted
技术标签:
【中文标题】将资源文件添加到 VC6 dll【英文标题】:Adding resource file to VC6 dll 【发布时间】:2009-02-03 15:30:41 【问题描述】:我有许多 VC 6.0 项目 (dsps),它们构建到没有资源文件的 dll 中。知道如何将资源添加到现有项目中吗?
该项目即将发布一个主要版本,我想为当前缺少的那些 dll 添加一个文件版本。 dll 将在发布之前重新编译,所以我只是想让这些 dsps 像我在这个项目中继承的所有其他 dsps(确实有一个文件和产品版本等,以便我们可以轻松地准确地知道什么在运行客户的机器。
一个答案:创建一个 *.rc 和 resource.h 文件(从另一个项目复制?)并将其添加到 VC6 文件视图中的 ypur 项目的源文件夹中。资源视图是自动创建的。谢谢你们的帮助,给了我需要的指点。
【问题讨论】:
要修改/添加资源到现有 DLL 而不重新编译,您可以使用“资源黑客”angusj.com/resourcehacker 之类的工具。 【参考方案1】:只需在 DLL 的资源文件中添加一个 VERSIONINFO 块。
打开 .rc 文件,然后使用“Insert/Resource.../Version”,您将获得一个带有一系列默认值的新 VERSIONINFO 资源。如果项目还没有资源文件,可以使用“File/New.../Resource Script”添加一个。
如果你想自己动手,VERSIONINFO
块在MSDN page for VERSIONINFO 上给出了一个示例:
#define VER_FILEVERSION 3,10,349,0
#define VER_FILEVERSION_STR "3.10.349.0\0"
#define VER_PRODUCTVERSION 3,10,0,0
#define VER_PRODUCTVERSION_STR "3.10\0"
#ifndef DEBUG
#define VER_DEBUG 0
#else
#define VER_DEBUG VS_FF_DEBUG
#endif
VS_VERSION_INFO VERSIONINFO
FILEVERSION VER_FILEVERSION
PRODUCTVERSION VER_PRODUCTVERSION
FILEFLAGSMASK VS_FFI_FILEFLAGSMASK
FILEFLAGS (VER_PRIVATEBUILD|VER_PRERELEASE|VER_DEBUG)
FILEOS VOS__WINDOWS32
FILETYPE VFT_DLL
FILESUBTYPE VFT2_UNKNOWN
BEGIN
BLOCK "StringFileInfo"
BEGIN
BLOCK "040904E4"
BEGIN
VALUE "CompanyName", VER_COMPANYNAME_STR
VALUE "FileDescription", VER_FILEDESCRIPTION_STR
VALUE "FileVersion", VER_FILEVERSION_STR
VALUE "InternalName", VER_INTERNALNAME_STR
VALUE "LegalCopyright", VER_LEGALCOPYRIGHT_STR
VALUE "LegalTrademarks1", VER_LEGALTRADEMARKS1_STR
VALUE "LegalTrademarks2", VER_LEGALTRADEMARKS2_STR
VALUE "OriginalFilename", VER_ORIGINALFILENAME_STR
VALUE "ProductName", VER_PRODUCTNAME_STR
VALUE "ProductVersion", VER_PRODUCTVERSION_STR
END
END
BLOCK "VarFileInfo"
BEGIN
/* The following line should only be modified for localized versions. */
/* It consists of any number of WORD,WORD pairs, with each pair */
/* describing a language,codepage combination supported by the file. */
/* */
/* For example, a file might have values "0x409,1252" indicating that it */
/* supports English language (0x409) in the Windows ANSI codepage (1252). */
VALUE "Translation", 0x409, 1252
END
END
【讨论】:
这些 dll 没有资源文件!当您打开项目时,有类和文件视图,但没有资源视图,项目目录中也没有任何 *.rc... 我可以创建一个 rc 文件并像添加 cpp 一样添加它吗? 是的 - 当您打开新的 .rc 文件时,您只需右键单击资源的根节点并选择“插入...”即可添加一个新的版本资源,其中包含许多为您默认的字段。【参考方案2】:您可以随时尝试使用editbin /VERSION:#[.#]
更改 dll 本身的版本。否则,它应该是项目资源文件中的一个条目。
【讨论】:
谢谢,你帮助澄清了我应该问的问题:)【参考方案3】:Patrick,添加 versioninfo 块是否实际上将版本控制添加到您的 DLL 中? 实际上,我的意思是当您将鼠标悬停在二进制文件上时,版本控制弹出...或右键单击>属性>详细信息也没有显示版本控制...
这适用于 exe(s),但每当我将 versioninfo 块添加到库时,什么都不会显示。
EB
好吧,我想我今天会分享我的无知......显然这个版本控制只对 exe(s) 和 dll(s) 有效,所以我希望在静态库上使用它以快速查看版本控制
p>【讨论】:
是的,我在弹出的属性中得到了版本以上是关于将资源文件添加到 VC6 dll的主要内容,如果未能解决你的问题,请参考以下文章
使用 Csharpcodeprovider 创建 DLL 并向其添加资源