10

Я пытаюсь сделать что-то, что очень легко сделать в обычном MSVC, но не поддерживается легко в VC++ Express.Ресурс версии в DLL не отображается с помощью щелчка правой кнопкой мыши

Редактора ресурсов в VC++ Express нет. Поэтому я добавил файл с именем version.rc в свой проект DLL. Файл имеет содержимое ниже, которое компилируется компилятором ресурсов и добавляется в финальную DLL. Этот ресурс можно просмотреть в DLL, используя reshacker, но не при щелчке правой кнопкой мыши по DLL в проводнике Windows.

Что не хватает в моем файле RC, чтобы он отображался при щелчке правой кнопкой мыши?

VS_VERSION_INFO VERSIONINFO 
FILEVERSION 1,0,0,1 
PRODUCTVERSION 1,0,0,1 
FILEFLAGSMASK 0x17L 
#ifdef _DEBUG 
FILEFLAGS 0x1L 
#else 
FILEFLAGS 0x0L 
#endif 
FILEOS 0x4L 
FILETYPE 0x1L 
FILESUBTYPE 0x0L 
BEGIN 
    BLOCK "StringFileInfo" 
    BEGIN 
     BLOCK "040904b0" 
     BEGIN 
      VALUE "FileDescription", "something Application" 
      VALUE "FileVersion", "1, 0, 0, 1" 
      VALUE "InternalName", "something" 
      VALUE "LegalCopyright", "Copyright (C) 2008 Somebody" 
      VALUE "OriginalFilename", "something.exe" 
      VALUE "ProductName", "something Application" 
      VALUE "ProductVersion", "1, 0, 0, 1" 
     END 
    END 
    BLOCK "VarFileInfo" 
    BEGIN 
     VALUE "Translation", 0x409, 1200 
    END 
END 

ответ

9

Правильное решение добавить в начало файла .rc:

#include <windows.h> 
+4

'#include ' достаточно –

3

Попробуйте изменить свои ресурсы на:

FILEFLAGSMASK 0x3fL 

и

BLOCK "040004e4" 

и

VALUE "Translation", 0x400, 1252 
+0

Затем выяснить, какие из ваших LIBS уже ссылку на версии ресурса. Вы уже привязываетесь к ресурсу версии (теперь вам нужно выяснить, какой из них и какой файл/lib это делает). – Stefan

+0

Попробуйте отключить инкрементную привязку: Свойства проекта-> Компонент-> Общие-> Включить инкрементную привязку Или может потребоваться перестройка. – Stefan

+0

Я удалил свои комментарии, теперь, когда вопрос был перефразирован. –

15

я был в состоянии видеть (с помощью ResHacker) одна разницы между моим ресурсом и ресурсы, которые появляются на буровой установке ht-click, и это было имя ресурса. Поэтому я изменил VS_VERSION_INFO на 1; и теперь ресурс отображается щелчком правой кнопки мыши.

1 VERSIONINFO 
FILEVERSION 1,0,0,1 
PRODUCTVERSION 1,0,0,1 
FILEFLAGSMASK 0x17L 
#ifdef _DEBUG 
FILEFLAGS 0x1L 
#else 
FILEFLAGS 0x0L 
#endif 
FILEOS 0x4L 
FILETYPE 0x1L 
FILESUBTYPE 0x0L 
BEGIN 
    BLOCK "StringFileInfo" 
    BEGIN 
     BLOCK "040904b0" 
     BEGIN 
      VALUE "FileDescription", "something Application" 
      VALUE "FileVersion", "1, 0, 0, 1" 
      VALUE "InternalName", "something" 
      VALUE "LegalCopyright", "Copyright (C) 2008 Somebody" 
      VALUE "OriginalFilename", "something.exe" 
      VALUE "ProductName", "something Application" 
      VALUE "ProductVersion", "1, 0, 0, 1" 
     END 
    END 
    BLOCK "VarFileInfo" 
    BEGIN 
     VALUE "Translation", 0x409, 1200 
    END 
END 
+2

Отличный улов! Я просто столкнулся с тем же. Предположительно, символ VS_VERSION_INFO определяется где-то еще, что не входит в ваш скрипт ресурса (или моего). –

+1

Я определил его равным 1, и теперь он работает. Спасибо! Хотелось бы, чтобы я нашел этот ответ раньше. –

+0

Ответ Дэвида на свой вопрос прав! И это большой улов, особенно когда вы создаете файлы ресурсов без использования Visual Studio. Возможно, именно поэтому он, Джим Рартон и я столкнулись с одной и той же проблемой. Спасибо, Дэвид! – user1593842