Добавление файла ресурсов в VC6 dll - PullRequest
2 голосов
/ 03 февраля 2009

У меня есть несколько проектов VC 6.0 (dsps), которые встроены в dll, у которых нет файлов ресурсов. Есть идеи, как добавить ресурсы в существующий проект?

В ближайшее время проект должен быть выпущен в основном выпуске, и я хочу добавить файловую версию к тем библиотекам, в которых в настоящее время ее нет. Dll будут перекомпилированы перед выпуском, поэтому я просто пытаюсь сделать эти dsps похожими на все остальные, которые я унаследовал с этим проектом (которые имеют версию файла и продукта и т. Д., Чтобы мы могли легко сказать, что именно работает машина клиента.

Один ответ: создайте файл * .rc и resource.h (скопировать из другого проекта?) И добавьте его в исходную папку проекта ypur в представлении файла VC6. Представление ресурса создается автоматически. Спасибо за вашу помощь, ребята, дали мне нужные мне указатели.

Ответы [ 3 ]

6 голосов
/ 03 февраля 2009

Просто добавьте блок VERSIONINFO в файл ресурсов для DLL.

Откройте файл .rc и используйте «Вставить / Ресурс ... / Версия», и вы получите новый ресурс VERSIONINFO с кучей значений по умолчанию. Если у проекта еще нет файла ресурсов, вы можете добавить его, используя «Файл / Новый ... / Сценарий ресурсов».

Если вы хотите свернуть свой собственный, пример блока VERSIONINFO приведен на странице MSDN для 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 голосов
/ 05 января 2010

Патрик, добавление блока versioninfo фактически добавило управление версиями в вашу DLL? И под фактическим я имею в виду, что при наведении курсора мыши на двоичный файл появляется всплывающее окно управления версиями ... или щелкните правой кнопкой мыши> Свойства> Сведения, но версии не отображаются ...

Это работает для exe (s), но всякий раз, когда я добавляю блоки versioninfo в библиотеку, ничего не появляется.

EB

Ладно, подумал, что сегодня я поделюсь своим невежеством ... очевидно, это версионирование действительно работает только для exe (s) и dll (s), поэтому моя надежда использовать его в статических библиотеках для быстрого просмотра версий

0 голосов
/ 03 февраля 2009

Вы всегда можете попробовать использовать editbin /VERSION:#[.#], чтобы изменить версию внутри самой dll. В противном случае это должна быть запись в файле ресурсов проекта.

...