2009-10-15 18 views
7

No conozco los scripts de RC.¿Necesito afxres.h, si no estoy usando MFC? ¿Cómo lo elimino del script .RC?

Quiero incluir los metadatos de la versión del producto, la versión del archivo, etc. en una DLL que estoy construyendo. Estoy usando un archivo .rc para hacer eso. La construcción es impulsada por archivos make. Estoy siguiendo junto con un ejemplo .rc scrpit que encontré.

El archivo .rc de plantilla incluye afxres.h, pero no creo que lo necesite. Pero si solo lo elimino, recibo un montón de errores de compilación.

¿Qué aspecto tiene un script RC básico que no es de MFC? ¿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 

.... 

Respuesta

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 
+3

Puede editar el archivo de recursos todo lo que quiera. La ventaja de dejar las líneas que borra solo es poder editarlo automáticamente usando el editor de recursos. Si observa detenidamente, verá que la segunda referencia a afxres.h reconstruye la primera cuando se regenera el archivo. Por lo tanto, reemplace ambas referencias a afxres.h con windows.h (ya que no está usando MFC) y el problema se resolverá. – shipr

5

tuve un problema similar cuando se trata de compilar sin MFC. La solución de Cheeso no funcionaría adecuadamente para mí.

Todo compilado bien, y no vi errores/advertencias durante la construcción. El ícono que se definió en mi archivo de recursos se mostró correctamente en 'Windows Explorer'. Sin embargo, los datos de la versión no estaban disponibles. (Que se puede ver al hacer clic derecho en el ejecutable y las propiedades de selección. En este caso no había una pestaña 'versión' presente)

Para que funcione tuve que agregar lo siguiente include en la parte superior de. archivo rc:

#include <windows.h> 

Con este cambio, la pestaña de la versión se mostraría en las propiedades del ejecutable. Además, la clase .NET System.Diagnostics.FileVersionInfo ahora puede obtener la información de la versión, mientras que esto no funcionaría antes.

Por defecto "stdafx.h" incluiría "windows.h". No estoy seguro de por qué se requiere windows.h, pero parece marcar la diferencia en mi caso.

Editar: Se agregó información más específica, en respuesta a Cheeso.

+0

¿Está diciendo que rc.exe no pudo compilar el script rc, sin ese archivo incluido? ¿Qué símbolo no fue definido? ¿Cómo falló? – Cheeso

Cuestiones relacionadas