将资源文件添加到VC6 DLL

时间:2009-02-03 15:30:42

标签: c++ version-control visual-c++ vc6

我有许多VC 6.0项目(dsps),它们构建在没有资源文件的dll中。知道如何将资源添加到现有项目中吗?

该项目即将发布一个主要版本,我想为那些目前缺少一个dll的dll添加一个fileversion。 dll将在发布之前重新编译,所以我只是尝试将这些dsps与我在此项目中继承的所有其他dsps一样(具有文件和产品版本等,以便我们可以轻松地确定正在运行的是什么客户的机器。

一个答案:创建* .rc和resource.h文件(从另一个项目复制?)并将其添加到VC6文件视图中的ypur项目的源文件夹中。资源视图自动创建。谢谢你的帮助,给了我需要的指示。

3 个答案:

答案 0 :(得分:6)

只需将VERSIONINFO块添加到DLL的资源文件中即可。

打开.rc文件,然后使用“Insert / Resource ... / Version”,您将获得一个带有一堆默认值的新VERSIONINFO资源。如果项目还没有资源文件,您可以使用“文件/新建... /资源脚本”添加一个。

如果您想自己推送,MSDN page for VERSIONINFO上会给出一个示例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

答案 1 :(得分:0)

您始终可以尝试使用editbin /VERSION:#[.#]更改dll内的版本。否则,它应该是项目资源文件中的条目。

答案 2 :(得分:0)

帕特里克,确实添加了versioninfo块实际上是在你的DLL中添加了版本控制吗? 实际上我的意思是当你将鼠标悬停在二进制文件上进行版本控制弹出...或者右键单击>属性>详细信息显示没有版本控制......

这适用于exe(s),但每当我向库中添加versioninfo块时,都不会显示任何内容。

EB

好吧,我想今天我会分享我的无知......显然这个版本只适用于exe(s)和dll(s)所以最终我希望在静态库上使用它来快速查看版本控制