2009-02-03 130 views
2

我有许多VC 6.0项目(dsps)构建到没有资源文件的dll中。任何想法如何将资源添加到现有项目?将资源文件添加到VC6 dll

该项目很快就会发布一个主要版本,我希望为当前缺少该版本的dll添加一个文件版本。在发布之前,dll将被重新编译,所以我只是试图将这些dsps与我在这个项目中继承的其他所有其他dps一样(它们有一个文件和产品版本等,以便我们可以轻松地确切地说明客户的机器

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

+0

要修改/添加资源到现有的DLL而无需重新编译,您可以使用像“Resource Hacker”这样的工具http://www.angusj.com/resourcehacker/。 – Ismael 2009-02-03 20:04:51

回答

6

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

打开.rc文件,并使用“插入/资源... /版本”,你会得到一个新的VERSIONINFO资源和一堆默认值。如果项目还没有资源文件,可以使用“文件/新建... /资源脚本”添加一个。

如果你想推出自己的,一个例子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 
+0

DLL没有资源文件!当你打开项目时,有类和文件视图,但没有资源视图,也没有在项目目录中的任何* .rc ...我可以创建一个rc文件并添加它,就像我会cpp? – Patrick 2009-02-04 11:19:07

+0

是的 - 当您打开新的.rc文件时,您可以右键单击资源的根节点,然后选择“插入...”,添加一个新的版本资源,其中包含许多默认的字段。 – 2009-02-04 17:06:09

0

你总是可以尝试使用editbin /VERSION:#[.#]改变DLL本身的版本。否则,它应该是在项目的资源文件中的条目。

+0

谢谢,你已经帮助澄清我应该问:) – Patrick 2009-02-03 16:02:10

0

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

这适用于exe(s)我将versioninfo块添加到库中什么也没有显示。

EB

好吧,我还以为今天会分享我的无知,显然这只是版本确实适用于EXE(S)和DLL(S),所以最终我希望把它用在静态库进行快速版本控制的视图