Нужен ли мне afxres.h, если я не использую MFC?Как удалить его из сценария .RC?

StackOverflow https://stackoverflow.com/questions/1575559

Вопрос

Я не знаю RC-скриптов.

Я хочу включить версию продукта, версию файла и т. д.метаданные в DLL, которую я создаю.Для этого я использую файл .rc.Сборка управляется make-файлом.Я следую примеру сценария .rc, который нашел.

Файл шаблона .rc включает в себя afxres.h , но я не думаю, что мне это нужно.Но если я просто удалю его, я получу кучу ошибок компиляции.

Как выглядит базовый сценарий RC, отличный от MFC?Можно ли удалить все вот так:

/////////////////////////////////////////////////////////////////////////////
// English (U.S.) resources

#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU)
#ifdef _WIN32
LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US
#pragma code_page(1252)
#endif //_WIN32

....
Это было полезно?

Решение 2

Мой ответ:
НЕТ, мне не нужна вся эта ерунда.Вот сценарий RC, который работает для VERSIONINFO.

#define VER_FILEVERSION          1,2,3,4
#define VER_FILEVERSION_STR      "1.2.3.4"
#define VER_PRODUCTVERSION       1,2,0,0
#define VER_PRODUCTVERSION_STR   "1.2.0.0"

// -------------------------------------------------------

VS_VERSION_INFO VERSIONINFO
 FILEVERSION            VER_FILEVERSION
 PRODUCTVERSION         VER_PRODUCTVERSION
 FILEFLAGSMASK 0x17L
#ifdef _DEBUG
 FILEFLAGS 0x1L
#else
 FILEFLAGS 0x0L
#endif
 FILEOS 0x4L
 FILETYPE 0x2L
 FILESUBTYPE 0x0L
BEGIN
BLOCK "StringFileInfo"
BEGIN
    BLOCK "040904b0"
    BEGIN
    VALUE "CompanyName",      "Company X"
    VALUE "FileDescription",  "Description Goes Here"
    VALUE "InternalName",     "NotSure"
    VALUE "LegalCopyright",   "Copyright (C) 2009 Your Name Here"
    VALUE "OriginalFilename", "DllName.dll"
    VALUE "ProductName",      "Product Title"
    VALUE "FileVersion",      VER_FILEVERSION_STR
    VALUE "ProductVersion",   VER_PRODUCTVERSION_STR
    END
END
BLOCK "VarFileInfo"
BEGIN
    VALUE "Translation", 0x409, 1200
END
END

Скомпилируйте его с помощью:

$(WindowsSDK)\bin\RC.exe /FoProjectName.res ProjectName.rc

Другие советы

У меня была аналогичная проблема при попытке скомпилировать без MFC.Решение Cheeso мне не подошло.

Все скомпилировалось нормально, и во время сборки я не увидел никаких ошибок/предупреждений.Значок, который был определен в моем файле ресурсов, правильно отображался в «Проводнике Windows».Однако данные о версии не были доступны.(Что можно увидеть, щелкнув правой кнопкой мыши по исполняемому файлу и выбрав свойства.В этом случае вкладка «версия» отсутствовала.)

Чтобы все заработало, мне пришлось добавить следующее включение в начало файла .rc:

#include <windows.h>

Благодаря этому изменению вкладка версии будет отображаться в свойствах исполняемого файла.Кроме того, класс .NET System.Diagnostics.FileVersionInfo теперь может получать информацию о версии, хотя раньше это не работало.

По умолчанию «stdafx.h» включает «windows.h».Я не уверен, зачем нужен windows.h, но, похоже, в моем случае это имеет значение.

Редактировать:Добавил более конкретную информацию в ответ на Cheeso.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top