Preciso de afxres.h se não estiver usando o MFC?Como faço para removê-lo do script .RC?
-
21-09-2019 - |
Pergunta
Não conheço scripts RC.
Quero incluir a versão do produto, a versão do arquivo, etc.metadados em uma DLL que estou construindo.Estou usando um arquivo .rc para fazer isso.A construção é orientada por makefile.Estou acompanhando um exemplo de scrpit .rc que encontrei.
O arquivo .rc do modelo inclui afxres.h
, mas acho que não preciso disso.Mas se eu apenas removê-lo, recebo vários erros de compilação.
Qual é a aparência de um script RC básico não MFC?Posso remover todas as coisas assim:
/////////////////////////////////////////////////////////////////////////////
// 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
....
Solução 2
Minha resposta:
Não, eu não preciso de toda essa porcaria. Aqui está um script RC que funciona para o 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
Conmpile com:
$(WindowsSDK)\bin\RC.exe /FoProjectName.res ProjectName.rc
Outras dicas
Tive um problema semelhante ao tentar compilar sem MFC.A solução do Cheeso não funcionaria adequadamente para mim.
Tudo compilado bem e não vi erros/avisos durante a construção.O ícone que foi definido no meu arquivo de recursos foi mostrado corretamente no 'windows explorer'.No entanto, os dados da versão não estavam disponíveis.(O que pode ser visto ao clicar com o botão direito nas propriedades do executável e da seleção.Neste caso, não havia guia 'versão' presente.)
Para fazê-lo funcionar, tive que adicionar o seguinte include no topo do arquivo .rc:
#include <windows.h>
Com essa mudança, a aba de versão apareceria nas propriedades do executável.Além disso, a classe .NET System.Diagnostics.FileVersionInfo agora é capaz de obter as informações da versão, embora isso não funcionasse antes.
Por padrão, "stdafx.h" incluiria "windows.h".Não sei por que o windows.h é necessário, mas parece fazer a diferença no meu caso.
Editar:Adicionadas algumas informações mais específicas, em resposta a Cheeso.