Добавление файла ресурсов в dll VC6
-
21-08-2019 - |
Вопрос
У меня есть несколько проектов VC 6.0 (dsps), которые встраиваются в библиотеки dll, у которых нет файлов ресурсов.Есть идеи, как добавить ресурсы в существующий проект?
В ближайшее время проект должен быть выпущен основной версией, и я хочу добавить версию файла к тем DLL, которые в настоящее время отсутствуют.Перед выпуском библиотеки DLL будут перекомпилированы, поэтому я просто пытаюсь сделать эти dsps похожими на все остальные, которые я унаследовал от этого проекта (у которых есть файл, версия продукта и т. д., чтобы мы могли легко сказать, что именно работает на машина клиента.
Один ответ:Создайте файлы *.rc и resources.h (копировать из другого проекта?) и добавьте их в исходную папку вашего проекта в представлении файлов VC6.Представление ресурсов создается автоматически.Спасибо за вашу помощь, ребята, дали мне необходимые подсказки.
Решение
Просто добавьте блок 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
Другие советы
Вы всегда можете попробовать использовать editbin /VERSION:#[.#]
изменить версию внутри самой dll.В противном случае это должна быть запись в файле ресурсов проекта.
Патрик, действительно ли добавление блока информации о версии добавило управление версиями в вашу DLL?На самом деле я имею в виду, что когда вы наводите указатель мыши на двоичный файл, появляется всплывающее окно с версией...или щелкните правой кнопкой мыши> Свойства> Сведения также не отображаются версии...
Это работает для exe(ов), но всякий раз, когда я добавляю блоки информации о версии в библиотеку, ничего не появляется.
ЭБ
Ладно, решил сегодня поделюсь своим невежеством...по-видимому, это управление версиями действительно работает только для exe(ов) и dll(ов), поэтому я не надеюсь использовать его в статических библиотеках для быстрого просмотра версий.