¿Es necesario Afxres.h, si no estoy utilizando MFC? ¿Cómo se quita desde el guión .RC?
-
21-09-2019 - |
Pregunta
No sé guiones RC.
Quiero incluir la versión del producto, la versión del archivo, etc. metadatos en un archivo DLL que estoy construyendo. Estoy usando un archivo .rc para hacer eso. La acumulación es impulsado makefile. Estoy siguiendo a lo largo con un ejemplo .rc scrpit que encontré.
La plantilla .rc archivo incluye afxres.h
, pero no creo que necesito. Pero si acabo de quito consigo un montón de errores de compilación.
Lo que hace un no MFC-RC mirada guión básico, como? ¿Puedo eliminar todas las cosas de esta manera:
/////////////////////////////////////////////////////////////////////////////
// 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
....
Solución 2
Mi respuesta:
NO, no necesito toda esa basura. Aquí hay un script RC que funciona para 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 con:
$(WindowsSDK)\bin\RC.exe /FoProjectName.res ProjectName.rc
Otros consejos
Yo tenía un problema similar cuando se trata de compilar sin MFC. La solución de Cheeso no funcionaría adecuadamente para mí.
Todo lo compila bien, y no vi errores / advertencias durante la construcción. El icono que se definió en mi archivo de recursos se muestra correctamente en 'Windows Explorer'. Sin embargo, los datos de la versión no estaba disponible. (Que se puede ver al hacer clic derecho sobre las propiedades ejecutables y selección. En este caso no hubo 'versión' pestaña actual.)
Para conseguir que funcione he tenido que añadir la siguiente incluir en la parte superior del archivo .rc:
#include <windows.h>
Con este cambio, la pestaña versión aparecería en las propiedades del ejecutable. Además, la clase .NET System.Diagnostics.FileVersionInfo es ahora capaz de obtener la información de versión, mientras que esto no iba a funcionar antes.
defaultly "stdafx.h" incluiría "windows.h". No estoy seguro de por qué windows.h se requiere, pero parece hacer la diferencia en mi caso.
Editar:. Añadido alguna información más específica, en respuesta a Cheeso